node.js接收上传的文件

node.js是一门主要用来处理服务器请求的语言,在处理请求的时候,表单是最为普通的一种请求,
在某种情况下,我们需要接受用户上传的文件,一起来了解一下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");
    })
})

猜你喜欢

转载自blog.csdn.net/qq_36529459/article/details/80159222