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)
两个字符串值都会在服务器上发布,但不会在图像上发布.如果我在发布图像文件的任何地方出错,请纠正我.我是新来的改造.
根据您的问题,服务器期望的变量是两个图像(文件)是fileToUpload1和fileToUpload2.图像没有上传的原因是因为你在你的指定中使用了语法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
服务器期望与变量名称的文件fileToUpload1和fileToUpload2它必须与上述格式的文件名一起发布.你可以在这里参考解决方案,点击这里
这样做,你很高兴去:)