node.js是一门主要用来处理服务器请求的语言,在处理请求的时候,表单是最为普通的一种请求,
在某种情况下,我们需要接受用户上传的文件,一起来了解一下node.js中如何上传文件把,我在这里
以上传图片的例子。
nodejs中一个模块被称为formidable,可以使用npm install formidable使用npm进行下载。
首先,需要创建一个formidable的对象。
var form=new formidable.IncomingForm();
上传文件,我们就需要考虑将文件上传到哪个目录下。
form.uploadDir="保存文件路径"
接着就是处理上传的文件了。
上传文件的时候,nodejs默认会将上传的文件进行md5加密从而变成MD5名字格式的文件,并且连着扩展名也没了。
因此,我们可以将上传的文件进行重新命名并且加上上传文件的后缀名。
在某种情况下,我们需要接受用户上传的文件,一起来了解一下node.js中如何上传文件把,我在这里
以上传图片的例子。
nodejs中一个模块被称为formidable,可以使用npm install formidable使用npm进行下载。
首先,需要创建一个formidable的对象。
var form=new formidable.IncomingForm();
上传文件,我们就需要考虑将文件上传到哪个目录下。
form.uploadDir="保存文件路径"
接着就是处理上传的文件了。
上传文件的时候,nodejs默认会将上传的文件进行md5加密从而变成MD5名字格式的文件,并且连着扩展名也没了。
因此,我们可以将上传的文件进行重新命名并且加上上传文件的后缀名。
form.parse(req,(err,fields,files)=>{
//报错的时候直接抛出错误
if(err){
throw err;
}
//每当触发事件的时候就产生一个随机数
var ran=parseInt(Math.random()*89999+10000);
//获得上传文件的后缀名
//path.extname获得的是文件从'.'开始到最后的扩展名(是最后一个.)
var extname=path.extname(files.tupian.name);
//获得上传文件时的路径
const oldPath=__dirname+"/"+files.tupian.path;
//获得放到目的目录的路径
const newPath=__dirname+"/uploads/"+ran+extname;
//在上传文件成功之后,用rename参数进行修改文件名
//rename的参数有两种使用方法,就是下方的样子,参数为(oldPath,newPath,callback),另一中方法是(oldPath,newPath),即少了回掉函数
fs.rename(oldPath,newPath,(err)=>{
if(err){
throw Error('改名失败');
}
res.writeHead(200,{"Content-type":"text/plain"});
res.end("success");
})
})