簡體   English   中英

使用Android中的Retrofit2庫進行文件上傳

[英]File Uploading using Retrofit2 library in Android

在此先感謝...我需要幫助使用Retrofit2庫將文件(圖像文件)上傳到服務器。 我已經實現了簡單(基於文本)的請求和響應。 但我在將圖像文件上傳到服務器時面臨問題。 以下是我的Android代碼:

上傳功能

Map<String, RequestBody> map = new HashMap<>();
    File file = new File(mediaPath);
    RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
    map.put("file\"; filename=\"" + file.getName() + "\"", requestBody);
    ApiConfig getResponse = AppConfig.getRetrofit().create(ApiConfig.class);
    Call<ServerResponse> call = getResponse.upload("token", map);




    call.enqueue(new Callback<ServerResponse>() {
        @Override
        public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) {
            ServerResponse serverResponse = response.body();
            if (serverResponse != null) {
                if (serverResponse.getSuccess()) {
                    Toast.makeText(getApplicationContext(), serverResponse.getMessage(),Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), serverResponse.getMessage(),Toast.LENGTH_SHORT).show();
                }
                Log.e("Retro", serverResponse.getMessage());
            } else {
                Log.v("Response", serverResponse.toString());
            }
            progressDialog.dismiss();
        }

        @Override
        public void onFailure(Call<ServerResponse> call, Throwable t) {

        }
    });

接口

@Multipart
@POST("laundryapp/upload_image.php")
Call<ServerResponse> upload(
        @Header("Authorization") String authorization,
        @PartMap Map<String, RequestBody> map
);

ServerResponse文件

public class ServerResponse {

@SerializedName("success")
boolean success;
@SerializedName("message")
String message;

public String getMessage() {
    return message;
}

public boolean getSuccess() {
    return success;
}
}

我在服務器上的PHP代碼

    <?php

$target_dir = "uploads/";
$target_dir = $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_dir)) 
 {
  $success = true;
  $message = "Successfully Uploaded";
 }
 else 
 {
  $success = false;
  $message = "Error while uploading ". $target_dir;
 }
}
else 
{
 $success = false;
 $message = "Required Field Missing";
}

$response["success"] = $success;
$response["message"] = $message;
echo json_encode($response);

?>

我的問題

我面臨的主要問題是我總能得到

上傳時出錯

從服務器。 我檢查了變量$ target_dir ,它包含我試圖上傳的圖像文件的名稱。 但實際上沒有文件上傳到我的上傳文件夾...請在此問題上有任何幫助。 我現在已經筋疲力盡了

在搜索並幫助人們提出建議后,我發現我沒有將權限授予我的文件和文件夾。 因此,在授予權限后,我的代碼完全正常。 這段代碼是正確的,所以任何人都可以在將來使用此代碼...如果需要一些關於此代碼的幫助,請隨時問我。 非常感謝幫助我解決問題的每個人。 祝你今天愉快...!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM