2017-09-18 39 views
0

私はウェブサイト開発を初めて利用しています。私は私のバックエンド(ファルコンフレームワーク)と私がいたやったとして反応-Reduxの、とPythonを使用しています:PythonはPOSTリクエストからformDataを受け取り、ストリームを取得し、File Corruptを受け取ります。

1)POSTへの発送を使用して、フロントエンドから)(FORMDATAを受信:

私の派遣コード:

this.props.dispatch({type: ActionTypes.FILE_UPLOAD_REQUEST, email: this.state.email, file: this.state.policyFile}); 

とミドルウェアを使用して、唯一の機能のPOSTを呼び出すには:

var result = yield call(Atlas.uploadFile, action.email, action.file); 

をし、私のフェッチ機能:

鷹のAPIを使用して
export const uploadFile = (email, file) => { 
    console.log(file); 
    return fetch(`${BASE_URL}/v1/files/${email}/policies`, { 
     method: 'POST', 
     body: file, 
     headers:{} 
    }) 
    .then(response => response.json()) 
} 

と私のバックエンド側、:

def on_post(self, req, resp, email): 
    local_path = create_local_path(req.url, req.content_type) 
    with open(local_path, 'wb') as temp_file: 
     body = req.stream.read() 
     temp_file.write(body) 

問題はtemp_fileが作成されますが、それが破損していると私はtxtファイルに拡張子を変更した後です。それは、コンピュータだけが理解できるいくつかの奇妙なコードで書かれるべきです。しかし、ファイル全体を壊すいくつかの行があります。助けてください。これは、txtファイルは次のようになります:

------WebKitFormBoundaryQXmL1AgwA112xzkA 
Content-Disposition: form-data; name="file"; filename="baboon.jpg" 
Content-Type: image/jpeg 

ˇÿˇ‡JFIFˇ€Ñ (%!1"%)+...383-7(-.+ 

- %を---------------.---------------- ------------ 7 ----- ¿ "fi"ƒƒ>!1AQ "aqÅë°2B±¡R-・#brÒÇí?$3Scƒƒ'1QAa"#2BqÅ /? "G÷=`^- Á÷$ x 'xÄ'Å'、5kÔV¶±È[email protected]¡tq]〜¸¢J ^dö± "≈B-Ba.'QoQΠ0dúC、 •1BR¢は、それはファイルが破損して作る 'Ô¨C/ƒXΩ¡EB & をAOと最初の3行で

ルックを続ける。

?は、multipart/form-dataのアップロードを処理するためのミドルウェアを提供し https://github.com/yohanboniface/falcon-multipartのようなものを、使用する必要があります - あなたは箱から出してやろうとしているよう

任意のアイデア

答えて

0

ファルコンは、ファイルのアップロードを処理しません。私はあなたが使用している正確に何フレームワークはわからないものの、

from falcon_multipart.middleware import MultipartMiddleware 

api = falcon.API(middleware=[MultipartMiddleware()]) 

あなたはおそらく(fetch post with multipart form dataを参照してください)フロントエンドのコードを変更することをお勧めします:

はあなたのような何かをしてミドルウェアを追加します。

インストールが完了したら、あなたはより多くの(あなたが「イメージ」と呼ばれるフォームフィールドにファイルを渡していると仮定した場合)のように見えるハンドラのコードで終わるかもしれない:

def on_post(self, req, resp, email): 
    local_path = create_local_path(req.url, req.content_type) 
    with open(local_path, 'wb') as temp_file: 
     body = req.get_param('image') 
     temp_file.write(body) 
は、
関連する問題