使用form表单向node上传文件

html代码

<form action="http://localhost:3000/api/reg" enctype="multipart/form-data" method="post">
        <input type="file" name="icon">
        <input type="submit" value="提交">
</form>

js代码

// 引入模块
const express = require('express')
const fs = require('fs')
const path = require('path')
const bodyParser = require('body-parser')
const app = express()
// 监听端口
app.listen(3000,()=>{
    console.log('3000端口正在监听中')
})

// 静态资源托管
// 如果用户想要在浏览器上直接访问图片或者HTML页面,需要做一个静态服务器
app.use(express.static('./public'))

// 文件上传  前端上传一张图片给后端,后端需要将图片存入upload文件夹中
// 引入中间件
const multer = require('multer')

// 实例化multer
let objMulter = multer({dest:'./public/upload'})  //dest:指定 保存位置(保存到服务器中0)

// 使用中间件
app.use(objMulter.any())  //运行上传什么类型的文件,any就代表任意类型

app.post('/api/reg',(req,res)=>{
    console.log(req.files)  //结果是一个数组,数组中存的对象 
    // [
    //     {
    //       fieldname: 'icon',   表单name名
    //       originalname: 'pic1.PNG',   //上传的文件名
    //       encoding: '7bit',   //编码格式
    //       mimetype: 'image/png',   //文件类型 
    //       destination: './public/upload',   //保存路径
    //       filename: '68f1e9675b965cc2e0a88789cabf9a98',  //保存后的文件名  不含后缀
    //       path: 'public\\upload\\68f1e9675b965cc2e0a88789cabf9a98',  //保存磁盘路径+保存后的文件名  不含后缀
    //       size: 20766
    //     }
    //  ] 

    // 需要进行文件的改名操作
    // fs.renameSync('改前','改后')
    let oldFile = req.files[0].path
    let newFile = req.files[0].path + path.parse(req.files[0].originalname).ext
    fs.renameSync(oldFile,newFile)
    //  把磁盘路径转成网络路径入库操作

    //  可以将地址返回给客户端
    res.send({
        err:0,
        url:'http://localhost:3000/upload/'+req.files[0].filename+path.parse(req.files[0].originalname).ext
    })
})
发布了9 篇原创文章 · 获赞 0 · 访问量 160

猜你喜欢

转载自blog.csdn.net/weixin_46389498/article/details/104825891
今日推荐