0

mongodb gridfs ストリームから読み取って、サーバー (Java を使用して構築) にファイルをアップロードしようとしています。

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-stream

アップストリーム サーバーから次のエラーが表示されます。

javax.servlet.ServletException: multipart/form-data リクエストの処理に失敗しました。ストリームが予期せず終了しました

ここで何がうまくいかないのでしょうか?

4

1 に答える 1

0

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

于 2016-07-11T10:58:42.020 に答える