2016-09-16 65 views
0

我使用Node js從Android應用程序上傳圖像。結果非常不可預測。有時上傳是成功的,有時候是失敗的。我在客戶端使用Retrofit將數據發送到服務器API,該服務器API由兩個字段1)Base64字符串和2)圖像名稱組成。在服務器端我使用這段代碼如何使用NodeJS作爲後端將圖像(Base64字符串)從Android上傳到服務器?

app.post("/api/image", function (req, res) { 
    var image = req.body.image; 
    var name = req.body.name; 
    var response = {}; 

    fs.writeFile(path, new Buffer(image, "base64"), function (err) { 
     response.message = "success"; 
     res.send(response); 
    }); 
}); 

有時我會得到成功消息,大部分時間都是失敗。
可能是什麼問題?在我跳到Node Js之前,我正在使用PHP,並且相同的客戶端代碼在PHP上成功,但在Node js中失敗。 注意:我正在使用AWS。

+0

上傳失敗時,您是否收到*錯誤*? – CodeWalker

+0

爲什麼base64編碼的圖像,當你可以發送原始圖像數據,而不是特別是因爲它似乎你可能已經在使用multipart? – mscdex

回答

0

您應該找到發生錯誤的位置:writeFile調用之前或中間件調用之前。此外,它是很好的提升你的問題與detailes:到底發生了什麼並在過程中發生故障時,它創建的文件或沒有,等

可能有幾個問題:對於

  • 身體太大(100K身體分析器,如果我是正確的)。
  • 正文被破壞(使用md5哈希來確保)。
0

看起來帕夏是對的。身體太大,因爲某些圖像比其他圖像大,所以我遵循此代碼並解決了我的問題。

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({limit: "50mb"})); 
app.use(bodyParser.urlencoded({limit: "50mb", extended: true,parameterLimit:50000})); 
相關問題