Я работаю над проектом Cordova, который загружает фотографии на сервер. Во время тестирования этого на Android вызывается успешный обратный вызов, но файл не загружен на сервер.
Папка назначения на сервере присутствует с необходимым разрешением.
Ниже приведен раздел Javascript
var options = new FileUploadOptions();
options.fileKey = "myphoto";
options.fileName = filetoupload.substr(filetoupload.lastIndexOf('/')+1);
options.mimeType = "image/jpeg";
options.chunkedMode = false;
options.headers = {
Connection: "close"};
var ft = new FileTransfer();
ft.upload(filetoupload, encodeURI(websrvs_base_url), win, fail, options);
В PHP серверный код
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS");
header("content-type: application/json; charset=utf-8");
if($_FILES['myphoto']['size'] > 0) {
$path = $ROOT_PATH . "mypics/";
$tmpname1 = $_FILES['myphoto']['tmp_name'];
$ptname1 = $_FILES['myphoto']['name'];
move_uploaded_file($tmpname1, $path . $ptname11);
echo 'success';
}
На проверке $_FILES['myphoto']['error']
возвращает 7
Сервер имеет следующие настройки для загрузки файлов
file_uploads - On
memory_limit - 128M
post_max_size - 64M
upload_max_filesize - 100M
Должен ли я добавить какие-либо дополнительные заголовки в скрипт PHP, чтобы получить файл из приложения?
Оказалось, что это проблема с сервером, наш демонстрационный сервер был заполнен диском и не позволял загружать фотографии из приложения.
Нам нужно будет проверить доступное пространство для папки / tmp на сервере, так как она будет использоваться в качестве временного хранилища перед загрузкой файла в фактическое место назначения. Файлы не будут загружаться, если папка / tmp заполнена или есть какие-либо ограничения.
Других решений пока нет …