![](/img/trans.png)
[英]How can I pipe a file using multer to Google Cloud Storage?
[英]How can I get multiple upload stream with multer storage engine?
我正在制作一个multer存储引擎,该引擎可以在客户端和S3 Server之间建立流连接。
在流的中间,我的代码检查块并将其发送到S3。
我可以从node.js服务器获取文件流。 但是,当我请求文件阵列上传时,节点检查器仅显示一个流。 我该怎么办?
流引擎代码段
CustomStreamEngine.prototype._handleFile = function _handleFile (req, file, cb) {
// for inspect
req.files.length // 1
file;
};
请求控制器
var streamStorage = multer({
storage: streamEngine()
});
dev.post('/rec_test', streamStorage.array('source'), (req, res, next) => {
});
我刚刚在npm上将此流multipart/form-data
解析器发布为form-parser :
您应该能够执行以下操作:
dev.post('/rec_test', async (req, res, next) => {
// Parse request
await parser(req, async ({ fieldType, fieldName, fieldContent }) => {
// Log all fields
console.log({ fieldType, fieldName, fieldContent });
// Handle 'source' file fields
if (fieldType === 'file' && fieldName === 'source[]') {
// Get file info
const { fileName, fileType, fileStream } = fieldContent;
// Upload fileStream to S3 :-)
}
});
});
希望对您有所帮助。
ķ
我认为您可以将一些日志添加到https://github.com/expressjs/multer/blob/master/lib/make-middleware.js进行检查。 目前,我在客户端上使用axios通过multer将多个文件发送到服务器。 而且我可以在函数busboy.on('file', function (fieldname, fileStream, filename, encoding, mimetype),
看到所有文件busboy.on('file', function (fieldname, fileStream, filename, encoding, mimetype),
但是一次只有一个文件,此函数将调用_handfile函数。自定义存储,以便我认为这是您遇到问题的原因。希望它可以为您提供帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.