私はAxiosを使ってFat FreeへのAJAXリクエストを行いました。ここでFat FreeはファイルアップロードでAxios FormDataをキャッチできませんでした
は、レシーバのコードです:
$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=>{
});
});
は、ペイロードが私のためにOKのようです、私は意味し、ファイル名、コンテンツタイプ、フォーム名を送信します。しかし、FatFree Webのクラスはそれを捕まえていませんでした。それはそれがapplication/octet-stream
であることを伝えるだけです。
ここペイロード
ためscreenshootだし、ここにあなたが問題を知っている\Web::instance()->receive
からダンプされたデータですか?
は、これは 'PUT'と' POST'問題、REFのようです。 github.com/ebhel/2410898 ファイルをサーバに与えるために 'PUT'を使う必要があります。 : – Chris
なぜ 'PUT'が必要なのですか?' receive() 'を呼び出す直前に' $ f3-> VERB = 'POST'を試すことができますが、これは醜いハックです。 – xfra35
はクライアントのアップロードの実装に依存します。私は '$ f3 - > VERB = 'POST'を前回と同じように使っていましたが、かなりうまくいきました。少しアップしましたが、アップローダが一般的な規約に従わなければ、それは妥当なハッキングIMOです。 – ikkez