Tag: busboy

Node Express Busboy文件和字段上传

当用Express来处理图片上传时,我可以得到一个multipart / form-data的字段和文件,如下所示: var busboy = require('connect-busboy'); app.use(busboy()); app.post('/something', function(req,res) { req.pipe(req.busboy); req.busboy.on('field', function(fieldname, val) { // do stuff here with fields… } req.busboy.on('file', function (fieldname, file, filename) { // do stuff here with the file } }); 我想知道的是,有一个例子,在我处理文件之前,我想知道这些字段是什么。 在我的实验中,似乎每次都得到第一个字段。 有谁知道这是否总是如此?

可能与busboy发出错误?

是否有可能与busboy发布错误并处理? 例: busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { if(mimetype !== 'application/pdf') { this.emit('error',new Error('Wrong file type')); return; } } busboy.on('error', function(err) { console.log('An error has occured: \n' + err); }); 如果我这样做,我得到以下错误: events.js:141 throw er; // Unhandled 'error' event ^ Error: Wrong file type at Busboy.<anonymous> (/home/ubuntu/workspace/suploadtest/app.js:44:31) at emitMany (events.js:108:13) at Busboy.emit (events.js:182:7) at Busboy.emit […]

nodejs,connect-busboy。 上传几个文件

当通过公务员上传less量文件时,遇到事件问题。 我的代码: app.post('/multiupload', function(req, res) { var fstream; var files = []; var busboy = new Busboy({headers: req.headers}); busboy.on('file', function (fieldname, file, filename) { fstream = fs.createWriteStream(__dirname + '/../static/uploaded/' + filename); file.pipe(fstream); fstream.on('close', function(){ console.log('file ' + filename + ' uploaded'); files.push(filename); }); }); busboy.on('end', function(){console.log('END')}); busboy.on('finish', function(){ console.log('finish, files uploaded ', files); res.redirect('back'); }); […]

如何设置编码file upload

我正在使用angular度file upload ,当我上传一个非TXT的文件,如图片,PDF或DOC文件,我尝试下载,文件是不同于我上传的文件看图片),我不确定这是否是因为上传文件时出现错误的编码。 左边的文件是原始文件。 客户端: var uploader = $scope.uploader = new FileUploader({ scope: $scope, url: '/file/upload/', method:'POST', headers: { 'X-XSRF-TOKEN': 'some token' } }); $scope.upload = function(){ uploader.queue.forEach(function(item){ item.formData = [ {'filename': 'friendlyName' }, {'objectType': 'element' }, {'elementId': 'someId'} ]; }); uploader.uploadAll(); }; 后端POST … 在这里,busboy文件事件中的编码variables是'7bit' .. exports.uploadDocument = function(req,res){ req.pipe(req.busboy); var doc = new […]

busboy将不会收到上传的文件

我的表单很简单。 它使用ng-flow来处理file upload: <form class="form-horizontal" enctype="multipart/form-data"> <div flow-init="{target: '/test', testChunks: false, query: {'_csrf': '{{csrf}}', 'somestring': 'teststring'} }" flow-files-submitted="data.flow.upload()" flow-name="data.flow"> <input type="file" flow-btn/> </div> </form> 一旦图像被选中, ng-flow将对目标path执行POST。 看起来像图像是由于请求有效负载有一堆像这样发送的: 1048576 ——WebKitFormBoundaryw2YAG9m602ICPd0Q Content-Disposition: form-data; name="flowCurrentChunkSize" 图像不是很大(〜1MB) 在nodejs端(带有express): var busboy = require('connect-busboy')({ limits: { fileSize: 10 * 1024 * 1024 } }); router.post('/test', busboy, function(req, res) { console.log('test called'); […]

无法将s3对象readstream传递给PUT请求

我有一个简单的情况。 我需要从S3中读取一个对象,并将其输出传递给PUT请求。 这是我的代码使用请求 。 // client.js let AWS = require('aws-sdk') let request = require('request') let bucket = 'my_bucket' let filename = 'path/to/file.zip' let host = 'localhost' let port = 8080 let s3 = new AWS.S3({ . . . }) let readStream = s3.getObject({ Bucket: bucket, Key: filename }).createReadStream() let formData = { applicationType: 'my_app_type', applicationName: […]

如果mimetypes无效,如何停止上传和redirect到busboy?

我对Node.js相当陌生,我使用Express和Busboy-Connect来创build一个简单的file upload表单,仅用于wav文件。 这是我想要做的: – 开始上传 – 如果mimetype不是wav,则redirect到错误页面 – 否则:在服务器上写入文件并重新导向回去。 如果mimetype是有效的,一切正常,但如果不是,我不能redirect,浏览器只是挂起,最终超时。 我的理解是,浏览器不想redirect,因为它正在等待上传完成,但我怎样才能取消上传,然后在我的js代码? 我可以解决这个问题,然后编写文件,然后删除它,如果它不是正确的mimetype,但我认为这样做有点愚蠢,我宁愿find一种方法来触发事件,将立即停止和redirect。 这是(我的应用程序代码片段): app.get('/', function (req, res) { res.render(__dirname + '/public/index.ejs', {error: 0}); }); app.get('/error', function (req, res) { res.render(__dirname + '/public/index.ejs', {error: 1}); }); app.post('/upload', function (req, res) { var timestamp = new Date().getTime().toString(); //console.log(timestamp); var fstream; req.pipe(req.busboy); req.busboy.on('file', function (fieldname, file, filename, encoding, […]

节点Busboy中止上传

我正在使用busboy ,将我上传的文件写入缓冲区并对其进行validation(宽度,高度和文件大小)。 一旦我发现上传有问题,我不能为了我的生活找出如何中止/停止stream。 例如,如果我想要允许的500kb的最大文件大小,我会跟踪缓冲区的大小,因为它正在上传,如果大小超过500kb,我想中止。 这是我的代码的简化版本。 var self = this; var busboy = new Busboy({ headers: self.req.headers, limits: { files: 1 } }); busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { file.fileRead = []; var size = 0; file.on('data', function(chunk) { size += chunk.length; /* DO VALIDATION HERE */ if( size > 500000) { /*** ABORT HERE […]