美文网首页
基于nodejs服务端的上传文件操作

基于nodejs服务端的上传文件操作

作者: Piemon_Jay | 来源:发表于2019-01-23 11:13 被阅读0次

1、首先安装multer,命令:

npm install express multer

2、在路由文件(此处操作以已经搭建好的express项目为例,详见“Express脚手架generator快速搭建项目”)中引入multer模块,并设置上传路径:

var multer = require('multer');
var upload = multer({dest:'upload/'})

这里注意了:这样设置,如果没有upload文件夹,则会自动创建。为什么要注意这一点,下面会说到。

3、上传接口

router.post('/upload', upload.single('myfile'), function(req, res, next){
    //console.log(req);
  res.send({ret_code: '0'});
});

4、html文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form action="/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="myfile" id="myfile" value="" />
            <input type="submit" value="上传"/>
        </form>
    </body>
</html>

此时就完成了上传文件的基本操作。
上传测试:


发现图片没有后缀名

此时发现文件(我用的是jpg图片)没有后缀名,这特么不是操蛋么,于是只能找度娘嘿嘿嘿了一下。
解决方法:
在multer对象下设置diskStorage
把步骤2的

var upload = multer({dest:'upload/'});

替换为:

 var storage = multer.diskStorage({
     //设置上传后文件路径,uploads文件夹需要手动创建!!!
        destination: function (req, file, cb) {
            cb(null, './public/uploads')
       }, 
     //给上传文件重命名,获取添加后缀名
      filename: function (req, file, cb) {
          var fileFormat = (file.originalname).split(".");
          cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
      }
 });  
     //添加配置文件到muler对象。
     var upload = multer({
          storage: storage
    });

这样设置uploads文件夹作为上传路径时,需要手动在public内创建uploads。若没有uploads文件夹,浏览器报错" Not found No such file or directory, open ...."
这里有人说没有uploads也能自动创建(我的反正是报错了)

修改完成之后,测试上传:


上传成功

完美达到预期目标。

对你有帮助的话,点个喜欢吧!

<button onclick="alert('I like U')">喜欢</button>

相关文章

网友评论

      本文标题:基于nodejs服务端的上传文件操作

      本文链接:https://www.haomeiwen.com/subject/rxhjjqtx.html