【问题标题】:Upload Image using Retrofit and PHP API使用 Retrofit 和 PHP API 上传图片
【发布时间】:2020-03-09 18:23:46
【问题描述】:

我正在尝试使用 Retrofit API 上传图片。我的android代码如下

public interface FileUploadService {
    @Multipart
    @POST("upload.php")
    Single<ResponseBody> onFileUpload(@Part("username") RequestBody mUserName, @Part MultipartBody.Part file);
}

PHP 代码如下所示

<?php
$target_dir = "upload/";
$target_file_name = $target_dir .basename($_FILES["file"]["name"]);
$response = array();

// Check if image file is a actual image or fake image
if (isset($_FILES["file"])) 
{
   if (move_uploaded_file($_FILES["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;
echo json_encode($response);


?>

我在 android 端没有收到任何错误,它工作正常,但在服务器中,我收到如下错误

PHP Notice:  Undefined index: file in line 3

让我知道我错过了什么。谢谢!

【问题讨论】:

    标签: php android retrofit2


    【解决方案1】:

    在您的服务器部分代码中,您希望字段名称为file。我猜想在 Android 中准备多部分数据时,您没有使用相同的名称 (file)。

    在您的 Activity/Fragment 中,多部分数据准备代码应如下所示。

    String fileName = "your file name with extension";
    RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
    MultipartBody.Part.createFormData("file", fileName, requestBody);
                                // ----^^^^--- look at the field name (first parameter)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多