Angular – Node Express – 大图片上传问题
我正在处理使用express.js,节点和angular度的file upload。 适用于小尺寸图像的基本function。 当我尝试上传更大的图像时,我得到了404错误。 我使用angular度file upload。 这是我的file upload编码
$upload.upload({ url: '/products/image/upload', data: { PRODUCT_ID : productId, }, file: file }).progress(function(evt){ console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total, 10)); }).success(function(data){ console.log(data); });
这是我的快速js代码
app.post('/products/image/upload', controller.uploadProductImage); exports.uploadProductImage = function(req, res){ var fileObject = req.files.file; var newPath = ''; var newFilename = 'sample.png'; newPath = './uploads/products/' + newFilename; fs.rename(fileObject.path, newPath, function(err) { if (err) throw err; fs.unlink(fileObject.path , function() { if (err) throw err; }); }); res.json({success:true});
};
我只在这里发布了示例代码。 它适用于较小尺寸的图像。 但是,如果我上传一个大尺寸的图像,路由显示为404错误消息。 我希望这将是一些configuration问题,如内存,进程限制。 我不确定什么是确切的问题。
我试图在expression脚本中设置限制
app.use(express.limit('2mb'));
这不适合我。 我试了
node --max-old-space-size=2000 app.js
厄运。 请帮我解决这个问题
提前致谢
我一直试图让我的头在使用Angular,Node和Express自己的file upload。 我正在使用Express v4.1与connect-busboy,并具有以下Node,Express Code与Daniel Faridsangular度file upload模块一起工作。
SERVER.JS var express = require('express'); // Express Web Server var busboy = require('connect-busboy'); //表单/file upload的中间件 var path = require('path'); //用于文件path var fs = require('fs-extra'); //文件系统 - 用于文件操作 var util = require('util'); var app = express(); app.use(busboy的()); app.use(express.static(path.join(__ dirname,'public'))); / * ================================================ ========== 创build一个路线(/上传)来处理表单提交 (处理POST&PUT请求/上传) Express v4路由定义 ================================================== ========== * / app.route( '/上传') .post(function(req,res,next){ var arr; var fstream; var filesize = 0; req.pipe(req.busboy); req.busboy.on('file',function(fieldname,file,filename,encoding,mimetype){ //上传的文件名,编码,MIMEtypes console.log('File ['+ fieldname +']:filename:'+ filename +',encoding:'+ encoding +',MIMEtypes:'+ mimetype); //上传的文件大小 file.on('data',function(data){ console.log('File ['+ fieldname +'] got'+ data.length +'bytes'); fileSize = data.length; console.log(“fileSize =”+ fileSize); }); file.on('end',function(){ console.log('File ['+ fieldname +'] ENDed'); 的console.log( “-------------------------”); }); / * 填充数组 我正在收集关于文件的数据读取文件信息。 这可能是更正确的 文件保存到img文件夹后读取文件数据 file.pipe(stream)完成文件大小可以使用stats.size得到,如图所示 下面 * / arr = [{fieldname:fieldname,filename:filename,encoding:encoding,MIMEtype: 的mimetype}]; //图片上传的path fstream = fs.createWriteStream(__ dirname +'/ img /'+ filename); //创build一个可写的stream file.pipe(fstream的); //将发布的数据传递给文件 //stream结束 - (写入的数据)发送回应 req.on('end',function(){ res.writeHead(200,{“content-type”:“text / h tml”}); // http响应头 //res.end(JSON.stringify(arr)); // http响应正文 - 发送json数据 }); //完成写入stream fstream.on('finish',function(){ console.log('Finished writing!'); //获取文件保存到服务器的文件统计信息(包括大小) fs.stat(__ dirname +'/ img /'+ filename,function(err,stats){ 如果(ERR) 扔呃; //如果一个文件 if(stats.isFile()){ //console.log("It''sa file&stats.size =“+ JSON.stringify(stats)); console.log(“文件大小保存到服务器:”+ stats.size); 的console.log( “-----------------------”); }; }); }); //错误 fstream.on('error',function(err){ 的console.log(ERR); }); }); // @ END / .req.busboy })// @ END / POST
查看[My GitHub]( https://github.com/mick26/ng_Node-AdvancedFileUpload )
请注意,Express 4.1中内置的许多中间件都省略了。 您将无法使用req.files,因为此函数是称为“有力”的第三方中间件的一部分,该另一个中间件称为“bodyParser”。 我觉得NPM和body-parser都是可用的。 相反,我使用了一个名为connect-busboy的npm模块,并对数据进行stream式传输。 我刚刚检查了程序,成功上传了一个> 320M的文件。 希望这可以帮到你。
- Angular 2 / webpack“未捕获的ReferenceError:require没有定义”
- npm ERR! 404没有findnpm ERR! 不好的代码0
- 我怎样才能克隆一个窗口服务器端使用jQuery?
- 量angular器E2E – 你如何pipe理数据库?
- NodeJS + Socket.IO不能让json返回
- angular-cli没有安装在ubtunu 16.04
- 使用express.Router()与多个url和可选参数
- 如何使用Angular js&Node.js通过dynamic生成的字段将数据发布到mongodb
- 如何从angular.js中的redirectURL捕获和获取价值?