2016-04-01 21 views
0

我想通過從mongodb gridfs流中讀取將文件上載到服務器(使用Java構建)。使用請求庫的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」},將其添加到頭文件中,並且沒有任何抱怨。 – Prabhat

+0

這就是它的樣子:request.post({url:IHUrl, headers:{「transfer-encoding」:「chunked」}, formData:formData } – Prabhat

回答

0

我意識到它已經有一段時間了,它可能會遇到一些問題,並且解決方案並不是我在評論中發佈的內容,因爲我稍後發現更多問題。我們遇到的問題是,我們發佈多部分表單數據的java servlet無法處理分塊數據,並且設置標題對您沒有任何好處。使用請求庫不會幫你在這裏。我必須利用restler(https://www.npmjs.com/package/restler)將整個多部分數據發送到一個塊中。