vue3+koa+mysql实现图片上传,具体怎么实现,分别写前端和后端的例子代码、
时间: 2024-04-08 07:33:02 浏览: 32
对于Vue3+Koa+MySQL实现图片上传,下面是前端和后端的示例代码:
前端代码(使用Vue3):
```html
<template>
<div>
<input type="file" @change="handleFileUpload" />
<button @click="uploadImage">上传图片</button>
</div>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
selectedFile: null,
};
},
methods: {
handleFileUpload(event) {
this.selectedFile = event.target.files[0];
},
uploadImage() {
const formData = new FormData();
formData.append("image", this.selectedFile);
axios.post("http://localhost:3000/upload", formData)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
},
},
};
</script>
```
后端代码(使用Koa):
```javascript
const Koa = require("koa");
const koaBody = require("koa-body");
const mysql = require("mysql");
const app = new Koa();
app.use(koaBody({ multipart: true }));
const db = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "database_name",
});
app.use(async (ctx) => {
if (ctx.url === "/upload" && ctx.method === "POST") {
const file = ctx.request.files.image;
const reader = fs.createReadStream(file.path);
const filePath = path.join(__dirname, "uploads") + `/${file.name}`;
const upStream = fs.createWriteStream(filePath);
reader.pipe(upStream);
db.query(
`INSERT INTO images (name, path) VALUES (?, ?)`,
[file.name, filePath],
(error, results) => {
if (error) {
console.error(error);
ctx.status = 500;
ctx.body = "上传失败";
} else {
ctx.status = 200;
ctx.body = "上传成功";
}
}
);
}
});
app.listen(3000, () => {
console.log("Server is running on port 3000");
});
```
请注意,上述代码仅为示例,具体的数据库和文件存储配置需要根据实际情况进行修改。同时,需要安装相关依赖,如axios、koa、koa-body、mysql等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)