Загрузка нескольких файлов не работает для видеофайлов в Okhttp3

#java #php #android-studio #okhttp

Вопрос:

Я пытаюсь загрузить несколько файлов одновременно из Android studio на php-сервер (в моем случае WAMP) с помощью Okhttp3… Поэтому я использую этот код ниже

 MultipartBody.Builder multipartBody = new MultipartBody.Builder().setType(MultipartBody.FORM);
for (int g = 0; g < filesToUpload.size(); g  ){
    File readFile = filesToUpload.get(g);
    Uri uris = Uri.fromFile(readFile);
    String fileExt = MimeTypeMap.getFileExtensionFromUrl(uris.toString());
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExt.toLowerCase());
    multipartBody.addFormDataPart("files[]", readFile.getName(), RequestBody.create(MediaType.parse(mimeType), readFile));
}
multipartBody.addFormDataPart("user", user)
    .addFormDataPart("caption", caption);
        
RequestBody requestBody = multipartBody.build();
Request request = new Request.Builder()
        .url(Constants.fileUploadUrl)
        .header("Accept", "application/json")
        .header("Content-Type", "application/json")
        .post(requestBody)
        .build();
        
 

А ниже приведен php-код

 if(isset($_POST)){
    $caption = mysqli_real_escape_string($con, $_POST['caption']);
    $user = $_POST['user'];
    
    if(isset($_FILES['files'])){
        //upload files to php server
    }
}
 

Код работает нормально, и файлы загружаются на PHP-сервер, но только тогда, когда все файлы представляют собой изображения, когда я пытаюсь загрузить видео, это не работает.
Я получаю ошибку undefined index caption и undefined index user .
Затем я пытаюсь выполнить print_r($_POST) и print_r($_FILES) и получаю пустой массив

Сначала в моем Java-коде я сохраняю все файлы(только изображения и видео), выбранные для загрузки в список ArrayList filesToUpload , и это отлично работает, когда я пытаюсь загрузить только изображения

Другие переменные , такие как user , caption и fileUploadUrl все они определены и работают правильно

Затем в моем PHP-коде в строке указано //upload files to php server , где я разместил свой блок кода для загрузки файлов на сервер… Нет необходимости показывать его как print_r($_FILES) возвращающий пустой массив.

Пожалуйста, кто-нибудь знает, откуда взялась ошибка? Я все еще новичок в Java и Android Studio

Вот версия Ohttp3, которую я использую

 implementation ("com.squareup.okhttp3:okhttp:4.3.1")
 

And I have also edited my php.ini file upload_max_filesize = 500M

Редактировать

Я только что заметил, что проблема не в типе файла, а в размере файла… Он не загружает большие файлы, потому что я попытался загрузить 2 видео объемом 800 Кб и 3 МБ, и файлы были загружены на сервер.

Так что я не знаю, является ли это ошибкой из ohttp