私は改造で新たなんだを使用してマルチパートアップロードを失敗したと私は改造2を使用してアップロードしたいすべての応答は、PHPからではなく、場合は改造2
失敗アップロード
あるファイルをアップロード私は常に成功したPostmanを使っています。
以下は私のコードです。
主な活動
File zip = new File(Environment.getExternalStorageDirectory() + "/test.zip");
RequestBody reqBody = RequestBody.create(MediaType.parse("multipart/form-file"), zip);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", zip.getName(), reqBody);
ApiServices api = RetroClient.getApiServices();
Call<ResponseApiModel> upload = api.fileUpload(filePart);
upload.enqueue(new Callback<ResponseApiModel>() {
@Override
public void onResponse(Call<ResponseApiModel> call, Response<ResponseApiModel> response) {
if (response.body().getCode().equals("1")) {
Toast.makeText(MainActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, response.body().getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseApiModel> call, Throwable t) {
Log.d("RETRO", "ON FAILURE : " + t.getMessage());
}
});
APIサービス
@Multipart
@POST("getzip.php")
Call<ResponseApiModel> fileUpload (@Part MultipartBody.Part File);
PHPコード
$part = "./upload/";
$filename = rand(9,9999).".zip";
$res = array();
$code = "";
$message = "";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_FILES['file'])){
$destinationfile = $part.$filename;
$data = $_FILES['file'];
if(move_uploaded_file($data['tmp_name'], $destinationfile)) {
$code = 1;
$message = "Success Upload";
}else {
$code = 0;
$message = "Fail Upload";
}
}else{
$code = 0;
$message = "request error";
}
}else
{
$code = 0;
$message = "Request Not Vaild";
}
$res['code'] = $code;
$res['message'] = $message;
echo json_encode($res);
以下のコードサンプルがマルチパート形式ここで
を使用する必要がある「失敗のアップロードは、」 'てみてください。..ダンプをチェックし、ファイル$ _FILES [「ファイル」]をダンプ'$ message =" Fail Upload ";' on_response内のAndroidアプリケーションにメッセージを記録し、エラー処理を改善します。response.code == 200 onResponse 。 –
このブログを読む、https://mobikul.com/uploading-number-files-using-retrofit-multipart-request/ –