前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node中间件multer文件上传实践

Node中间件multer文件上传实践

作者头像
RtyXmd
发布2018-08-30 14:42:35
7720
发布2018-08-30 14:42:35
举报
文章被收录于专栏:前端vue
1.首先安装multer
代码语言:javascript
复制
cnpm install --save multer
2.引入

我是在路由中用到的 所以在route/index.js中引入

代码语言:javascript
复制
var express = require('express')
var multer  = require('multer')
var path = require('path');  引入path用来访问服务器目录
3.文件存储配置
代码语言:javascript
复制
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        //文件存储目录
        cb(null, path.join(__dirname, '../../upload_files'))
        //我这里的路径是与node项目同级而不是在node项目中
        //这样写当每次更新服务器代码的时候不会导致静态资源的冲突
    },
    filename: function (req, file, cb) {
        //文件名 multer不会存储文件后缀 需自己添加
        var fileFormat = (file.originalname).split(".");
        cb(null, 'rty_blog' + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1])
    }
})
var upload = multer({
    storage: storage
})
4.基本用法
代码语言:javascript
复制
//单文件上传
router.post('/blogUpload', upload.single('avatar'), function (req, res, next) {
    console.log(req.file)
    console.log(req.file.filename)
})
5.upload参数(用于单个或多个文件上传)
single(fieldname)

单文件上传,接收一个以fieldname命名的文件,文件信息保存在req.file

array(fieldname,[maxCount])

多文件上传,接收一个以fieldname命名的数组。配置maxCount来限制最大上传数量。 文件信息保存在req.files

fields(fields)

接收指定fields的混合文件。文件信息保存在req.files req.files 是一个对象 (String -> Array) 键是文件名,值是文件数组

6.遇到的问题及解决方案

照上面写的话在本地跑是没问题的

本地返回

因为是本地起的服务,文件返回的路径也是相对于windows的磁盘目录返回的路径

注意:当部署到服务器时,文件存储路径就出问题了

服务器环境

在服务器上返回的是服务器的文件目录 这个路径是对的没错,但是这样返回根本读不到这个图片

自行拼接文件访问目录

文件的存储位置是和node服务同级的,此项目服务器为阿里云centos系统,去到阿里云后台添加安全组

阿里云安全组

配置nginx

代码语言:javascript
复制
server {
        listen 阿里云安全组端口;

        server_name **********;
        
        location / {
            root /usr/share/nginx/html/upload_files;
        }
    }

切记重启nginx 重启node

搞定收工~

上传成功

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.首先安装multer
  • 2.引入
  • 3.文件存储配置
  • 4.基本用法
  • 5.upload参数(用于单个或多个文件上传)
    • single(fieldname)
      • array(fieldname,[maxCount])
        • fields(fields)
        • 6.遇到的问题及解决方案
          • 注意:当部署到服务器时,文件存储路径就出问题了
            • 自行拼接文件访问目录
            • 搞定收工~
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档