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"); }) })