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

Node中间件multer文件上传实践

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

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

var express = require('express')
var multer  = require('multer')
var path = require('path');  引入path用来访问服务器目录
3.文件存储配置
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.基本用法
//单文件上传
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

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 File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档