2016-04-01 16 views
0

mongodb gridfsストリームからファイルを読み込み、サーバーにファイルをアップロードしようとしています。リクエストライブラリを使用したnodeJSファイルのアップロード

exports.upload = function(req, res, next) { 
var IHUrl = config.api.url + "PhotosServlet"; 


var data = req.body; 

var file1 = api.gfs.createReadStream({ 
    _id: data.fileId 
}) 

var formData = { 
    "imgTyp": data.imgTyp, 
    "listingid": data.listingid, 
    "scaleTech": data.scaleTech, 
    "SPC": data.SPC, 
    "SPCUID": data.SPCUID, 
    "varRand": data.varRand, 
    "file1": file1 
}; 

var r = request.post({ 
    url: IHUrl, 
    formData: formData 
}, function(error, IHResponse, body) { 
    if (error) { 
     res.send(500, error); 
     console.log("Error occured uploading file1") 
    } else { 
     console.log("Upload successful", IHResponse); 
     res.send(200, IHResponse); 
    } 
}); 
next(); 
}; 

アップストリームサーバーにファイルをアップロードする前に、mongodb gridfsにファイルが既にアップロードされています。

私は、次のnodejsのライブラリを使用しています:

要求、gridfsストリーム

を私は上流のサーバーから次のエラーを取得しています:

javax.servlet.ServletException:マルチパートの処理/フォーム - をデータ要求に失敗しました。ストリームが予期せず終了しました

ここで間違っている可能性がありますか?

+0

'next();'を削除してみてください –

+0

提案に感謝します。私はヘッダーを追加しようとしました:{"transfer-encoding": "chunked"}、ヘッダーにそれは苦情なしで働いた。 (request.post { URL:IHUrl、 ヘッダ:{ "転送エンコーディング":、} FORMDATA "チャンク":FORMDATA を} – Prabhat

+0

これは、次のようになります方法です – Prabhat

答えて

0

私はそれがしばらくして問題であることに気がつきました。あなたが遭遇する可能性のある問題がありました。解決策は、私がコメントで投稿したものではありませんでした。私たちが持っていた問題は、マルチパートフォームデータをポストしていたjavaサーブレットがチャンクされたデータを処理することができず、設定ヘッダーが役に立たないということでした。リクエストライブラリを使用してもここでは役に立ちません。私はrestler(https://www.npmjs.com/package/restler)を使用して、マルチパートデータ全体を1つのチャンクで送信する必要がありました。

関連する問題