Это мой PHP-код для загрузки файла:
<?php
$target_dir = "uploads/";
$rand = rand(0, 99999999);
$target_file_name = $target_dir .basename("$rand.png");
$response = array();
$postTest = $_POST["postTest"];
if (isset($_FILES["upload_file"]))
{
if (move_uploaded_file($_FILES["upload_file"]["tmp_name"], $target_file_name))
{
$success = true;
$message = "Successfully Uploaded";
}
else
{
$success = false;
$message = "Error while uploading";
}
}
else
{
$success = false;
$message = "Required Field Missing";
}
$response["success"] = $success;
$response["message"] = $message;
$response["postTestStatus"] = $postTestStatus;
$response["postTestMessage"] = $postTestMessage;
echo json_encode($response);
Это мой код Android:
val file = File(imagePath)
val requestBody = RequestBody.create(MediaType.parse("*/*"), file)
val fileToUpload = MultipartBody.Part.createFormData("upload_file", file.name, requestBody)
val requestPOST = RequestBody.create(MediaType.parse("plain/text"), textToPost)
var call = webApiInterface.uploadFile(fileToUpload, requestPOST)
call.enqueue()...
Когда я пытаюсь загрузить только файл, все в порядке.
Но когда я загружаю файл и POST-значение, у меня появляются ошибки (JSON от ответа не действителен)
Мой скрипт PHP, когда я пытаюсь использовать значение POST:
<?php
error_reporting(0);
$target_dir = "uploads/";
$rand = rand(0, 99999999);
$target_file_name = $target_dir .basename("$rand.png");
$response = array();
$postTest = $_POST["postTest"];
if (isset($_FILES["upload_file"]))
{
if (move_uploaded_file($_FILES["upload_file"]["tmp_name"], $target_file_name))
{
$success = true;
$message = "Successfully Uploaded";
}
else
{
$success = false;
$message = "Error while uploading";
}
}
else
{
$success = false;
$message = "Required Field Missing";
}
if(isset($postTest))
{
$postTestStatus = true;
$postTestMessage = $postTest;
}
else
{
$postTestStatus = false;
$postTestMessage = "Value isn't set";
}
$response["success"] = $success;
$response["message"] = $message;
$response["postTestStatus"] = $postTestStatus;
$response["postTestMessage"] = $postTestMessage;
echo json_encode($response);
?>
WEBApiInterface:
@Multipart
@POST("retrofit-example/multipartPOSTtest.php")
fun uploadFile(@Part file: MultipartBody.Part,
@Part("postTest") valForPOST: RequestBody): Call<FileResponse>
MainActivity:
val fileToUpload = MultipartBody.Part.createFormData("upload_file", file.name, requestBody)
val requestPOST = RequestBody.create(MediaType.parse("plain/text"), textToPost)
var call = webApiInterface.uploadFile(fileToUpload, requestPOST)
Я правильно делаю?
Я учусь использовать Retrofit.
Я прошу вашего понимания