2015-12-10 76 views
0

是否可以使用multer另外發送包含數據的文件和json對象? 我找到了this的線程。但它只解釋了當時如何附加一個字段。Multer上傳文件+ JSON對象

這裏我目前有客戶端:

request 
    .post(uploadPOSTUrl) 
    .set('Accept', 'application/json') 
    .field('Test', object.TestField) 
    .attach('file', file) 
    .end((err, res) => { 
    if (err) { 

    } else { 

    } 
    }); 

和服務器端,但

export function upload(req, res){ 
    console.log("UploadedJSON: ", req.body); 
    console.log("UploadedFile: ",req.file); 
    res.status(204).end(); 
} 

而不僅僅是發送1場。我需要發送整個對象.field('Test', object)。當我這樣做時,我在服務器端收到[Object object],並且無法訪問這些字段。

我唯一的解決方案,現在將循環,並在我的對象添加.field()每個字段...

回答

1

你的客戶端代碼看起來像它使用的SuperAgent庫,對嗎?如果是這樣,真正的問題是如何使用SuperAgent發送多部分請求,因爲multer只處理multipart/form-data。

的SuperAgent的documentation for multipart requests表明你做的方式是重複.field()方法:

request 
    .post('/upload') 
    .field('user[name]', 'Tobi') 
    .field('user[email]', '[email protected]') 
    .attach('image', 'path/to/tobi.png') 
    .end(callback); 
+0

因此,有不是重複的點域()沒有其他的辦法? 是的,即時通訊使用SuperAgent,但由於即時通訊上傳文件,我認爲穆爾特是負責。 –

+0

該文檔還顯示了一個接受對象的'.send()'方法,但我沒有看到有關使用multipart/form-data使用'.send()'方法的任何信息。你可以試驗'.send()',也許可以使用'.set('Content-Type','multipart/form-data')',但我不知道它是否按照這種方式工作。試一試。 – Nocturno

+0

好的,我將不得不重複.field()。 但既然你在這裏,我試圖下載上傳的文件並保存。用戶應該在下載部分的瀏覽器中看到它。我找不到任何這樣的例子..我想即時搜索錯誤的條款。 你有什麼想法嗎? –