改造v2.0.0-beta2如何使用RequestBody上传文件

Jol*_*sta 2 php android retrofit

我试图将图像发布到服务器.这是我在脚本服务器提供给我的服务器端的php变量名:

$value1 = $_POST["value1"]; // string value
$value2 = $_POST["value2"]; // string value

$img_1 = $_FILES["fileToUpload1"]["name"]; // image file
$img_2 = $_FILES["fileToUpload2"]["name"]; // image file
Run Code Online (Sandbox Code Playgroud)

这是我发布值的代码 -

RequestBody fileBody = RequestBody.create(MediaType.parse("image/png"), path.toString());
RequestBody fileBody1 = RequestBody.create(MediaType.parse("image/png"), path.toString());

Call<uploadResponseModel> call = adapter.uploadValues("test1","test2",fileBody1,fileBody);

call.enqueue(new Callback<uploadResponseModel>() {
    @Override
    public void onResponse(Response<uploadResponseModel> response, Retrofit retrofit) {
         Log.i("TAG", "retro onResponse :" + response.body().getResponse().getStatus());
    }

    @Override
    public void onFailure(Throwable t) {
        Log.i("TAG", "retro onFailure :" + t.getCause());
    }
});
Run Code Online (Sandbox Code Playgroud)

适配器类:

public interface RetrofitAdapter {
 @Multipart
 @POST("/TestApp/img_upload.php")
 Call<uploadResponseModel> uploadValues(@Part("value1")String  value1,@Part("value2")String  value2,@Part("fileToUpload1") RequestBody file1,@Part("fileToUpload2") RequestBody file2);
}
Run Code Online (Sandbox Code Playgroud)

两个字符串值都会在服务器上发布,但不会在图像上发布.如果我在发布图像文件的任何地方出错,请纠正我.我是新来的改造.

Roh*_* TP 6

根据您的问题,服务器期望的变量是两个图像(文件)是fileToUpload1fileToUpload2.图像没有上传的原因是因为你在你的指定中使用了语法RetrofitAdapter.

您必须将您更改RetrofitAdapter为:

public interface RetrofitAdapter {
 @Multipart
 @POST("/TestApp/img_upload.php")
 Call<uploadResponseModel> uploadValues(@Part("value1")String  value1,@Part("value2")String  value2,@Part("fileToUpload1\"; filename=\"image\" ") RequestBody file1,@Part("fileToUpload2\"; filename=\"image\" ") RequestBody file2);
}
Run Code Online (Sandbox Code Playgroud)

@Part("fileToUpload1 \"; filename = \"image \"")RequestBody file1

服务器期望与变量名称的文件fileToUpload1fileToUpload2它必须与上述格式的文件名一起发布.你可以在这里参考解决方案,点击这里

这样做,你很高兴去:)