目录
一、v-md-editor的使用
二、前端上传数据
这里没有构建 form 表单来上传文件,而是通过 FormData 对象 来模拟一个表单。然后借助 axios 向服务器的 http://localhost:3000/getImg 接口发送 post 请求,把构建的 formData 表单数据传送给服务器
handleUploadImage (event, insertImage, files) {
event.preventDefault()
let API_URL = 'http://localhost:3000'
let file = files[0]
let formData = new FormData()
formData.append('avatar', file)
console.log(files[0])
request("/getimg", "post", formData).then((res) => {
console.log(res)
insertImage({
url: `${API_URL}/avatars/${res.data.filename}`,
})
})
}
三、 Node.js后端代码
(新建一个入口文件----可以不使用入口文件)在app.js文件下使用, 记得先安装 npm i multer
因为只是上传一张图片,所以用到了 multer 的 single 接口, 其参数
avatar
字符串对应客户端表单对象formData
中包含的avatar
字段,这两个值必须保持一致。当客户端请求/upload
接口的时候,multer 会给 request 对象中添加一个 file 对象属性
const express = require('express');
// 创建服务器实例对象
const app = express();
const bodyParser = require('body-parser');
const path = require('path');
const multer = require('multer');
const upload = multer({ dest: './public/avatars/' })
// 导入和配置cors跨域
const cors = require('cors');
app.use(cors());
// 配置解析表单数据的中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));
app.post('/getimg', upload.single('avatar'), (req, res) => {
console.log(req);
res.send(req.file);
});
运行服务端 node app.js
在v-md-editor组件中点击上传图片即可 后端返回的数据
效果图
总结:
之前用的方法很繁琐,感觉这个方法挺合适的,官方文档的解释感觉有点少。
本文含有隐藏内容,请 开通VIP 后查看