Fat Free 无法通过文件上传捕获 Axios FormData

Fat Free failed to catch Axios FormData with file upload

我使用 Axios 向 Fat Free 发送 AJAX 请求。

接收者代码如下:

$files = \Web::instance()->receive(function($file){
    var_dump($file);
    return (substr($file["type"],0,6)=="image/");
}, true);
if($files===false)
    throw new \Exception\UnexpectedInput("U didn't provide any file");

这是发件人(目前我使用 Axios 来完成这项工作。)

return new Promise((ok,err)=>{
    var datanya = new FormData();
    datanya.append(this.generateRandomString(), new Blob([file[0]], {type:"image/jpeg"}), "image.jpg");
    // generate id for cancelation.
    this.uploadCancelSource = CancelToken.source();
    var config = {
        cancelToken: this.uploadCancelSource.token,
        onUploadProgress:(e)=>{
            this.uploadProgress = Math.round( (e.loaded * 100) / e.total );
        }
    }
    APICall.put("invoice/bukti", datanya, config).then(e=>{
    });
});

有效载荷对我来说似乎没问题,我的意思是,它传输文件名、内容类型和表单名称。但是 FatFree Web 的 Class 没有捕捉到它。它只是告诉它是一个 application/octet-stream.

这是有效负载的屏幕截图

这是从 \Web::instance()->receive

中转储的数据

你知道这个问题吗?

class Web 的当前行为是主要问题。正如您在 source code, or see the documentation 中看到的,它在不同的请求方法上有不同的行为。

一点hacking,可以用来解决当前的问题,但我决定更改请求方法。