Как обеспечить загрузку файлов с видео с помощью loopj AndroidAsyncHttp?

Я пытаюсь загрузить видеофайл на мой сервер из приложения для Android с помощью библиотеки loopj AndroidAsyncHttp. Загрузка изображения дает ответ «Успех: 200», тогда как попытка загрузить видео дает ответ 500 или 302 с ошибкой. Это мой метод загрузки:

    private void uploadVideoTwo(String filePath){

AsyncHttpClient client = new AsyncHttpClient();

File myFile = new File(filePath);
RequestParams params = new RequestParams();
try {
params.put("file", myFile);
} catch (FileNotFoundException e) {
Log.e(TAG, "Params Exception: " + e.getMessage());
}

client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d(TAG, "Success: " + String.valueOf(statusCode));
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.d(TAG, "Failure: " + String.valueOf(statusCode));
}
});}

Мой PHP-код выглядит так:

    <?php

$result = array("success" => $_FILES["file"]["name"]);

$name= $_FILES['file']['name'];

$tmp_name= $_FILES['file']['tmp_name'];

$path= "uploads/";

if (isset($name)) {

if (empty($name))
{
$result = array("success" => "error uploading file");
}
else
{
if (move_uploaded_file($tmp_name, $path . $name)) {
$result = array("success" => "File successfully uploaded");
}
}
}
echo json_encode($result);
?>

Android Studio logcat показывает процент выполнения при загрузке видеофайла, но выдает сообщение об ошибке после достижения 100%. Я использую намерение открыть камеру для захвата видео с ограничением 30 секунд и ограничением размера 5 МБ. Я понятия не имею, почему загрузка изображения работает нормально, но не видео с использованием того же сценария.

2

Решение

Проверьте значение post_max_size а также upload_max_filesize в вашем php.ini файл. Значение по умолчанию составляет всего 2 мегабайта, поэтому вы должны изменить его на что-то более подходящее.

Чтобы узнать местоположение php.ini на вашем собственном хосте просто вставьте вызов phpinfo() внутри любого доступного скрипта на вашем сайте и посмотрите вывод в вашем браузере.

Для популярных облачных платформ:

На Google Cloud Engine (стандартные или гибкие среды) поставь php.ini файл в корень вашего проекта (вместе с app.yaml) с этими строками внутри:

post_max_size = 128M
upload_max_filesize = 128M

На Heroku поставить .user.ini файл с тем же содержимым, что и выше, в корневом каталоге вашего приложения.

1

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

Это похоже на тайм-аут или проблему размера файла. Время выполнения скрипта php по умолчанию составляет 30 секунд. Измените его на 300 (5 минут) в вашем файле php.ini.

; Maximum execution time of each script, in seconds
max_execution_time=300

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=32M

Кроме того, включите отчеты об ошибках, поместив следующее в самом начале вашего php-скрипта. Это даст вам более подробное описание того, что происходит не так.

error_reporting(E_ALL);
ini_set('display_errors', 1);
2

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