1

我已经在互联网和这个论坛上搜索了这个问题,但我没有看到任何答案。

问题是How to upload files with flightphp micro-framework with DropZonejs or others

我有一些代码:

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 的问题?我尝试了一些没有flightphp的上传php脚本,它也没有使用dropzone上传文件。

4

1 回答 1

0

您无法在 Flight Framework 中使用 getBody() 方法获取文件。你可以这样做

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)
}
于 2019-01-24T22:58:36.453 回答