zoukankan      html  css  js  c++  java
  • Node.js--文件上传(multer和path模块的作用)

    用form配合node.js上传文件

    一 上传文件的请求方式

    上传文件一般都是用post请求来制作;

    二:form表单属性设置

    想用form表单来制作一个文件上传,他有三个属性是必不可少的

    1、method------>填写请求方式

    2、action ----->地址

    3、enctype------>规定在发送表单数据之前如何对其进行编码。就是以什么格式发送

    其中enctype要说一下,他的默认值是application/x-www-form-urlencoded(文本发送),但是我们上传文件所需要的是multipart/form-data -> 文件发送

    三:运用multer模块

    他能帮你上传文件,并且将上传的文件名改为一个哈希值,防止伤处啊的呢文件重名,但有一个问题,上传完成之后没有后缀名

    multer模块的作用是帮你上传文件到指定文件夹下(multer模块需要下载),它是以中间件的形式存在,所以要用一个sever.use()包裹

    3.1、引入

    let mulite1=require("multer");
    3、2
    server.use(mulite1({dest:"./上传的图片或文件/"}).any());
    mulite1括号中的对象dest属性的值是你将你上传的文件的存放到哪个位置

    3.3:request.files
    接下来我们可以到下一个server中用request.files来获取到你上传的文件的属性
    做到这一步,其实他就已经上传文件了,但是是没有后缀名的文件,这个问题解决方法要用到我们第二个模块,path

    四:path模块(不需要下载)

    他作用是可以解析地址,解析完成后他有几个属性

    root 在什么根目录
    dir 绝对地址
    base 文件名+后缀
    ext 后缀
    name 文件名

    我们这里需要用到的就是ext属性里面的东西

    4.1:

    我们要将3.4图片中的originalname文件用path.parse()解析出来(patn.parse(request.files[0].originalname)),拿到ext属性添加到3.4图片中的path位置上去

    修改名字我们需要用到fs模块中的rename方法

     这样,我们就能得到上传的文件并且将名字改为了哈希值

    总结
    最重要的四点:
    form表单中的enctype属性的设置,
    multer模块的下载与运用
    path模块的运用
    fs模块中rename的运用

  • 相关阅读:
    【QT】error: 'connect'/'sender' was not declared in this scope
    【QT】添加图片资源并使用QImage加载图片显示
    【QT】去掉.ui窗口的最大化、最小化和关闭按钮
    【Linux】(一)美化Linux终端之oh-my-zsh开源项目(Linux终端主题)
    【git】配置git命令行别名
    浅谈函数防抖与函数节流
    php连接数据库的天龙八部!
    JavaScript画圆
    表格的即时编辑
    用html+css+js模拟下拉菜单
  • 原文地址:https://www.cnblogs.com/te9999/p/14452506.html
Copyright © 2011-2022 走看看