• 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的运用

  • 相关阅读:
    @Controller @RestController
    HOMEWORD2
    cudnn、cuda
    jupyter使用
    python学习——os模块
    python学习——导入模块、__name__
    python学习——文件
    python学习——函数、内置函数
    python学习——for循环的应用
    python学习——字典、集合、数据类型总结
  • 原文地址:https://www.cnblogs.com/te9999/p/14452506.html
Copyright © 2020-2023  润新知