Загрузить файлы с помощью микро-фреймворка 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)
}
Другие вопросы по тегам