Android 改装上传的图像在服务器上损坏
Android retrofit uploaded image is corrupted on server
我正在尝试通过改造上传图片,但服务器上的结果图片已损坏!!!
----------------> 在 xampp 服务器上 ( Api27.php )<-------------- --
<?php
$result = array("success" => $_FILES["file"]["name"]);
$file_path = basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $file_path)) {
$result = array("success" => "File successfully uploaded");
} else{
$result = array("success" => "error uploading file");
}
echo json_encode($result, JSON_PRETTY_PRINT);
?>
----------------> Api.java <----------------
public interface Api {
@Multipart
@POST("Api27.php")
Call<ResponseBody> uploadFile(@Part("title") RequestBody title,
@Part MultipartBody.Part imageFile);
}
----------------> 这是我上传的函数<----------------
private void uploadFile(File myImagePathCompressed) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.0.45/ImageUploadApi/")
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Call<ResponseBody> uploadFileCall = api.uploadFile(
RequestBody.create(MediaType.parse("text/plain"), "title"),
MultipartBody.Part.createFormData("file", myImagePathCompressed.getName(),
RequestBody.create(MediaType.parse("image"), myImagePathCompressed)));
uploadFileCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
// TODO
Toast.makeText(SaveShowUpload.this, "response : \n" + response.body().toString(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// TODO
}
});
}
感谢那些花时间查看此 post 问题的人,
这是我的回答:
上面的代码是正确的,我只是以错误的方式压缩图像。
我希望这 post 对某人有所帮助 :)
我正在尝试通过改造上传图片,但服务器上的结果图片已损坏!!!
----------------> 在 xampp 服务器上 ( Api27.php )<-------------- --
<?php
$result = array("success" => $_FILES["file"]["name"]);
$file_path = basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $file_path)) {
$result = array("success" => "File successfully uploaded");
} else{
$result = array("success" => "error uploading file");
}
echo json_encode($result, JSON_PRETTY_PRINT);
?>
----------------> Api.java <----------------
public interface Api {
@Multipart
@POST("Api27.php")
Call<ResponseBody> uploadFile(@Part("title") RequestBody title,
@Part MultipartBody.Part imageFile);
}
----------------> 这是我上传的函数<----------------
private void uploadFile(File myImagePathCompressed) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.0.45/ImageUploadApi/")
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Call<ResponseBody> uploadFileCall = api.uploadFile(
RequestBody.create(MediaType.parse("text/plain"), "title"),
MultipartBody.Part.createFormData("file", myImagePathCompressed.getName(),
RequestBody.create(MediaType.parse("image"), myImagePathCompressed)));
uploadFileCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
// TODO
Toast.makeText(SaveShowUpload.this, "response : \n" + response.body().toString(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// TODO
}
});
}
感谢那些花时间查看此 post 问题的人, 这是我的回答: 上面的代码是正确的,我只是以错误的方式压缩图像。 我希望这 post 对某人有所帮助 :)