Я не могу загрузить или опубликовать более 1 МБ файла в Android

Я создал программу в Android для загрузки файлов. Все работает отлично. Но когда я загружаю файл, который имеет более 1 МБ, я получаю эту ошибку с моего сервера: «Ошибка при загрузке»

Вот мой метод UploadFile ()

 private void uploadFile() {
dialog = ProgressDialog.show(getActivity(), "", "Uploading File...", true);// Map is used to multipart the file using okhttp3.RequestBody
Map<String, RequestBody> map = new HashMap<>();
long maxLength = 10000000;
File file = new File(selectedFilePath);
if(file.length() > maxLength){
Toast.makeText(getActivity(), "can't upload file if size more than 10mb", Toast.LENGTH_LONG).show();
dialog.dismiss();

}else {
String name = tv_name.getText().toString();
String email = tv_email.getText().toString();
// Parsing any Media type file
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
RequestBody requestBody1 = RequestBody.create(MediaType.parse("text/plain"), name);
RequestBody requestBody2 = RequestBody.create(MediaType.parse("text/plain"), email);
map.put("file\"; filename=\"" + selectedFilePath + "\"", requestBody);
map.put("name\"; username=\"" + name + "\"", requestBody1);
map.put("email\"; email=\"" + email + "\"", requestBody2);

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) {
if(dialog.isShowing()){
dialog.dismiss();
}
ServerResponse serverResponse = response.body();
if (serverResponse != null) {
if (serverResponse.getSuccess()) {
Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();

} else {
Toast.makeText(getActivity(), serverResponse.getMessage(), Toast.LENGTH_SHORT).show();
}
} else {
//                    Log.v("Response", serverResponse.toString());
}
// dialog.dismiss();
goToProfile();}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {
t.printStackTrace();
dialog.dismiss();
Toast.makeText(getActivity(), "Failed, Please Try Again", Toast.LENGTH_SHORT).show();
}
});
}
}

TimeOut

   OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.MINUTES)
.writeTimeout(5, TimeUnit.MINUTES)
.readTimeout(5, TimeUnit.MINUTES).build();

return new Retrofit.Builder()
.baseUrl(AppConfig.BASE_URL).client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();

}

Это мой код PHP

$target_dir = "uploads/";
$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);

?>

-5

Решение

Попробуйте сжать файл и загрузить снова.

0

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

Используйте эту конфигурацию модернизации:

public static OkHttpClient okHttpClient1 = new OkHttpClient().newBuilder()
.connectTimeout(150, TimeUnit.SECONDS)
.writeTimeout(150, TimeUnit.SECONDS)
.readTimeout(150, TimeUnit.SECONDS)
.build();
private static Retrofit retrofit = null;

public static Retrofit getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(AppConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient1)
.build();
}
return retrofit;
}

Короче говоря, я хочу сказать, увеличение ваш тайм-аут на стороне Android.

0

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