vue上传图片如何给express 接口传递,express 只使用 fs模块进行保存图片
时间: 2023-12-14 09:39:51 浏览: 66
在Vue中,可以使用`FormData`对象来将图片数据转换为二进制数据,然后通过`axios`库发送POST请求将图片数据上传到Express服务器。
以下是一个简单的示例:
1. Vue组件代码
```html
<template>
<div>
<input type="file" @change="uploadImage">
</div>
</template>
<script>
import axios from 'axios';
export default {
methods: {
uploadImage(event) {
const formData = new FormData();
formData.append('image', event.target.files[0]);
axios.post('/api/images', formData)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
}
}
}
</script>
```
2. Express路由代码
```javascript
const fs = require('fs');
router.post('/images', (req, res) => {
const image = req.files.image;
const imagePath = `./public/images/${image.name}`;
fs.writeFile(imagePath, image.data, err => {
if (err) {
console.log(err);
res.status(500).send('Failed to save image');
} else {
res.send('Image saved successfully');
}
});
});
```
在Express中,通过`req.files`对象获取到前端发送的文件数据,然后使用`fs.writeFile`方法将文件保存到指定路径。
阅读全文