Загрузить файлы с помощью микро-фреймворка FlightPhp
Я уже ищу этот вопрос в интернете и на этом форуме, но не вижу ответов на этот вопрос.
Вопрос в том, как загружать файлы с помощью микро-фреймворка flightphp с помощью DropZonejs или других.
У меня есть код:
DropZone:
<form action="/admin/upload" method="put" class="dropzone">
<div class="fallback">
<input name="id" type="file" multiple />
</div>
PHP:
function upload() {
$uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/tmp/';
$uploadfile = $uploaddir . '1.jpg';
//move_uploaded_file(json_encode(Flight::request()->getBody()), $uploadfile);
echo json_encode(file_put_contents($uploadfile, Flight::request()->getBody()));
}
Flight::route('POST /admin/upload', 'upload');
Я тоже использовал этот пример, но у меня ошибка с '$_FILES['userfile']':
function upload_admin() {
if(preg_match("/(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$/", $_FILES['userfile']['name']))
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "OK";
}
}
}
Flight::route('/admin/upload', 'upload_admin');
После выполнения всех этих операций у меня есть null
результат.
Например, я перетаскиваю какой-то файл в DropZone. DZ запрос /admin/upload/. Это работает, но в конце концов у меня есть 1.jpg с null
размер. Результат загрузки
Спасибо всем.
UPD: Хм, может быть, проблема в dropzonejs? Я пытаюсь загрузить скрипт php без flightphp, и он тоже не загружает файлы с помощью dropzone.
0 ответов
Вы не можете получить файлы с помощью метода getBody() в Flight Framework. Вы можете сделать это как
Flight::route('POST /admin/upload', function(){
$request = Flight::request();
$file = $request->files['id']; // (id) which is your html element name
});
Переменная$file содержит некоторые свойства, как вы знаете, когда вы ее используете var_dump().
array(5) {
["name"]=>
string(14) "test_image.jpg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(14) "/tmp/php6cpnDa"
["error"]=>
int(0)
["size"]=>
int(18101)
}