【问题标题】:Upload multiple data using Retrofit and PHP scripts使用 Retrofit 和 PHP 脚本上传多个数据
【发布时间】:2019-06-12 11:39:41
【问题描述】:

这是我上传文件的 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 无效)

我尝试 POST 值时的 PHP 脚本:

<?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);

?>

WEBApi接口:

@Multipart
@POST("retrofit-example/multipartPOSTtest.php")
fun uploadFile(@Part file: MultipartBody.Part,
               @Part("postTest") valForPOST: RequestBody): Call<FileResponse>

主活动:

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)

我做得对吗? 我正在学习如何使用改造。 我请求你的理解

【问题讨论】:

  • 你能告诉我你的改造电话你用的是哪个电话吗?

标签: php android kotlin retrofit


【解决方案1】:
// First
@Multipart
@POST("retrofit-example/multipartPOSTtest.php")
fun uploadFile(@Part file: MultipartBody.Part): Call<FileResponse>

// Second
@Multipart
@POST("retrofit-example/multipartPOSTtest.php")
fun uploadFile(@Part file: MultipartBody.Part,
               @Part("postTest") valForPOST: RequestBody): Call<FileResponse>

回复方式:pastebin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多