2017-01-16 2 views
0

私は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であることを伝えるだけです。

ここペイロード

Request Dumping SS

ためscreenshootだし、ここにあなたが問題を知っている\Web::instance()->receive

Dumped data from server

からダンプされたデータですか?

+1

は、これは 'PUT'と' POST'問題、REFのようです。 github.com/ebhel/2410898 ファイルをサーバに与えるために 'PUT'を使う必要があります。 : – Chris

+0

なぜ 'PUT'が必要なのですか?' receive() 'を呼び出す直前に' $ f3-> VERB = 'POST'を試すことができますが、これは醜いハックです。 – xfra35

+1

はクライアントのアップロードの実装に依存します。私は '$ f3 - > VERB = 'POST'を前回と同じように使っていましたが、かなりうまくいきました。少しアップしましたが、アップローダが一般的な規約に従わなければ、それは妥当なハッキングIMOです。 – ikkez

答えて

0

クラスWebの現在の動作が主な問題です。 source codeに表示されているように、またはdocumentationを見ると、さまざまなリクエスト方法で異なる動作をします。

少しのハッキングは、現在の問題を解決するために使用することができますが、私はリクエスト方法を変更することを決めました。 https://github.com/bcosca/fatfree/blob/master/lib/web.php#L173 ます。https://要旨

関連する問題