#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