我試圖從提交的表單中上載具有來自不同輸入名稱的多個圖像文件的文件。使用skipper(sails.js)處理具有不同未知輸入字段名稱的中間件中的文件
例如,asumming與文本輸入和文件輸入的多形式,它不實際的組具有相同名稱的所有文件的輸入,例如images[]
<form ...>
some text inputs...
<input type='file' name='logo'/>
<input type='file' name='image-1'/>
<input type='file' name='image-2'/>
</form>
我想創建一個快遞/帆中間件處理上傳,所以我可以直接在我的控制器上訪問它們。
如果我這樣做(假設上req.file該上傳方法()被promisified)
async function(req, res, next){
const maxTimeToBuffer = 9500
const dirname = '/some-upload-path'
const uploads = [
await req.file('logo').upload(dirname, maxTimeToBuffer)
await req.file('image-1').upload(dirname, maxTimeToBuffer)
await req.file('image-2').upload(dirname, maxTimeToBuffer)
]
// attaching the uploads to the request body ...
next()
}
這將引發錯誤: EMAXBUFFER: An Upstream (
圖像-1 ) timed out before it was plugged into a receiver. It was still unused after waiting 9500ms. You can configure this timeout by changing the
maxTimeToBuffer option.
一點也沒有」無論如何,我將maxTimeToBuffer
增加到30000即使在船長模塊本身。
由於試圖以順序方式處理每個文件,無論發生錯誤,只要我知道輸入字段名稱,就可以並行處理它們。
async function(req, res, next){
const maxTimeToBuffer = 9500
const dirname = '/some-upload-path'
const uploads = await [
req.file('logo').upload(dirname, maxTimeToBuffer)
req.file('image-1').upload(dirname, maxTimeToBuffer)
req.file('image-2').upload(dirname, maxTimeToBuffer)
]
// attaching the uploads to the request body ...
next()
}
現在的問題是,我如何在最後一個片段上實現同樣的事情,但事先並不知道輸入字段。這樣
async function(req, res, next){
const maxTimeToBuffer = 9500
const dirname = '/some-upload-path'
const uploads = await req._fileparser.upstreams
// attaching the uploads to the request body ...
next()
}
的事情的東西是req._fileparser.upstreams
被其接收新流和第一形象被完全接收後,只會發生(連續),但如果我等待上行流陣列是完整的每一次更新我也會得到一個超時錯誤。
有沒有解決方法?
我知道有很多東西需要消化,如果您需要進一步澄清,請告訴我。 任何想法表示讚賞