如何在node.js中使用express进行上传
我的代码如下:如何在node.js中使用express进行上传,node.js,file-upload,express,Node.js,File Upload,Express,我的代码如下: app.configure(function () { app.use(express.static(__dirname + "/media")); app.use(express.bodyParser({ keepExtensions: true })); }) app.post('/upload', function (req, res) { console.log(req.files); res.send("w
app.configure(function () {
app.use(express.static(__dirname + "/media"));
app.use(express.bodyParser({
keepExtensions: true
}));
})
app.post('/upload', function (req, res) {
console.log(req.files);
res.send("well done");
return;
})
蚂蚁做一些工作,比如:
1.对progores
事件执行一些操作,如何将处理程序绑定到progress
,complete
事件,我尝试了req.files.on('progress',fn)
,但它不起作用
二,
我知道如何使用req.files
获取文件信息,
但是,如何在上传之前限制上传文件的大小,或限制上传图像的分辨率?我的项目中有一个加载文件的功能,可能会对您有所帮助:
var app = express.createServer(
express.bodyParser({uploadDir: "public/files", keepExtensions: true})
, express.cookieParser()
, express.session({ secret: 'keyboard cat' })
);
app.post('/upload', function (req, res) {
var msg = '';
var img = '';
//console.log("type: "+req.files.image.type);
//console.log("size: "+req.files.image.size);
if(req.files.image.type != 'image/png' && req.files.image.type != 'image/jpeg' && req.files.image.type != 'image/gif')
{
msg = 'Invalid format, accepts only: jpg, png and gif.<br/>';
}
if(req.files.image.size > 307200) // 300 * 1024
{
msg += 'File size no accepted. Máx: 300kb.<br/>';
}
if(msg == '')
{
if(diff > 0)
{
name = name.substring(name.length-diff, name.length);
}
var date = new Date();
var name = req.files.image.name;
var diff = name.length - 20;
var rnd_number = Math.floor(Math.random()*101);
var new_name = date.format('yyyymmdd_HHMMssl_') + rnd_number +'_'+ name;
fs.renameSync(req.files.image.path, 'public/files/img'+new_name);
img = '<img src="public/files/img/'+new_name+'" width="100%"/>';
}
res.render('admin/upload', {layout: false, img: img, msg: msg});
})
var app=express.createServer(
bodyParser({uploadDir:“public/files”,keepExtensions:true})
,express.cookieParser()
,express.session({secret:'keyboard cat'})
);
app.post('/upload',函数(req,res){
var msg='';
var img=“”;
//log(“类型:”+req.files.image.type);
//log(“大小:”+req.files.image.size);
如果(req.files.image.type!=“image/png”&&req.files.image.type!=“image/jpeg”&&req.files.image.type!=“image/gif”)
{
msg='无效格式,仅接受:jpg、png和gif。
';
}
如果(req.files.image.size>307200)//300*1024
{
msg+=“不接受文件大小。Máx:300kb.
”;
}
如果(消息=“”)
{
如果(差异>0)
{
name=name.substring(name.length-diff,name.length);
}
变量日期=新日期();
var name=req.files.image.name;
var diff=name.length-20;
var rnd_number=Math.floor(Math.random()*101);
var new_name=date.format('yyyyymmdd_hhmmsl_uu')+rnd_编号+''名称;
fs.renameSync(req.files.image.path,'public/files/img'+新名称);
img=“”;
}
res.render('admin/upload',{layout:false,img:img,msg:msg});
})
您应该看看,这是一个涉及文件上传的文件
它说,限制是通过“限制”选项设置的,如果将“延迟”选项设置为true,则可以听取进度。在这种情况下,上传使用的表单被设置为请求的属性。然后你就可以听音乐了
因此,您的代码应该如下所示(尚未测试):
关于如何向客户发送进度有什么建议吗?我是否需要保存百分比,是否需要从客户端手动获取请求以请求百分比?
app.configure(function () {
app.use(express.static(__dirname + "/media"));
app.use(express.bodyParser({
keepExtensions: true,
limit: 10000000, // 10M limit
defer: true
}));
})
app.post('/upload', function (req, res) {
req.form.on('progress', function(bytesReceived, bytesExpected) {
console.log(((bytesReceived / bytesExpected)*100) + "% uploaded");
});
req.form.on('end', function() {
console.log(req.files);
res.send("well done");
});
})