Загрузка файлов с использованием библиотеки Retrofit2 в 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
);

Файл отклика сервера

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 и он содержит имя файла изображения, которое я пытаюсь загрузить. Но на самом деле ни один файл не загружается в мою папку загрузки … Пожалуйста, помогите в этом вопросе. Я слишком истощен сейчас

3

Решение

После поиска и помощи предложений от людей я узнал, что я не предоставил разрешение на мой файл и папку. Поэтому после получения разрешения мой код работает отлично. Этот код является правильным, так что любой может использовать этот код в будущем … Если вам нужна помощь в отношении этого кода, не стесняйтесь спрашивать меня. И большое спасибо всем, кто помог мне решить мою проблему. Хорошего дня…!

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]