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
})
})