2016-06-21 8 views
1

Vielen Dank im Voraus ... Ich brauche Hilfe beim Hochladen von Datei (Bilddatei) auf Server mit Retrofit2-Bibliothek. Ich habe bereits eine einfache (textbasierte) Anfrage und Antwort erhalten. Aber ich habe Probleme beim Hochladen von Bilddateien auf den Server. Unten ist mein Android-Code:Datei Hochladen mit Retrofit2-Bibliothek in Android

Upload-Funktion

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) { 

     } 
    }); 

Schnittstelle

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

ServerResponse Datei

public class ServerResponse { 

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

public String getMessage() { 
    return message; 
} 

public boolean getSuccess() { 
    return success; 
} 
} 

Mein PHP-Code auf dem Server

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

?> 

Mein Problem

Das Hauptproblem i bin vor ist, dass ich immer

Fehler erhalten, während

Hochladen von Server. Ich habe die Variable $ target_dir überprüft und es enthält den Namen der Image-Datei, die ich hochladen möchte. Aber tatsächlich wird keine Datei in meinen Upload-Ordner hochgeladen ... Bitte helfen Sie in dieser Angelegenheit. Ich bin jetzt zu erschöpft

+1

https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server –

+0

Dieser Blog kann Ihnen helfen, Datei auf dem Server hochzuladen –

+0

Haben Sie die Schreibberechtigung darauf überprüft Ordner auf Ihrem Server – Ashwani

Antwort

0

Nach der Suche und helfenden Vorschlägen von Leuten, ich kam zu wissen, dass ich nicht die Erlaubnis zu meiner Datei und Ordner gewährt habe. Nach der Erlaubnis funktioniert mein Code einwandfrei. Dieser Code ist korrekt, so dass jeder diesen Code in Zukunft verwenden kann ... Wenn Sie Hilfe bezüglich dieses Codes benötigen, dann zögern Sie nicht, mich zu fragen. Vielen Dank an alle, die mir geholfen haben, mein Problem zu lösen. Einen schönen Tag noch...!