我使用 Busboy 模块通过下面的 CoffeeScript 代码来解析多部分请求。
有时,问题出在“数据”处理程序上,该处理程序针对包含一个文件的请求多次调用。
这意味着我需要对每个尺寸进行求和才能得出整个尺寸。
此外,“文件”处理程序中的文件对象似乎不包括大小信息。
如何在不计算各个部分的情况下获得整体尺寸?
提前致谢-
busboy.on 'file', (fieldname, file, filename, encoding, mimetype) ->
filename = "#{Meteor.uuid()}.jpg"
dir = "#{HomeDir()}/data/profile"
saveTo = path.join dir, filename
file.pipe fs.createWriteStream saveTo
files.push
filename: filename
path: saveTo
fileSize: data.length
file.on 'data', (data) ->
# this data handler called several times
files.push
filename: filename
path: saveTo
fileSize: data.length
file.on 'end', ->
console.log 'file finished'
由于您已经将流传输到文件,因此您需要使用类似的东西stream-meter https://www.npmjs.com/package/stream-meter:
var meter = require('stream-meter');
...
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
...
var m = meter();
file.pipe(m).pipe(fs.createWriteStream(saveTo)).on('finish', function() {
files.push({
filename : filename,
path : saveTo,
fileSize : m.bytes,
});
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)