flask+vue的图片上传功能使用upload怎么实现
时间: 2024-02-25 17:59:04 浏览: 155
在 Flask 中实现 Vue 图片上传功能,可以使用 Flask 的 Flask-Uploads 扩展,它可以方便的处理文件上传。下面是一个使用 Flask-Uploads 实现 Vue 图片上传功能的代码示例:
1. 安装 Flask-Uploads 扩展:
```
pip install flask-uploads
```
2. 在 Flask 中配置上传文件存储位置:
```python
from flask import Flask
from flask_uploads import UploadSet, IMAGES, configure_uploads
app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = 'static/uploads/photos'
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
```
3. 在 Vue 中添加文件上传组件:
```html
<template>
<div>
<input type="file" @change="onFileChange">
<button @click="upload">上传</button>
</div>
</template>
<script>
export default {
data() {
return {
file: null,
url: null
}
},
methods: {
onFileChange(event) {
this.file = event.target.files[0]
},
upload() {
let formData = new FormData()
formData.append('photo', this.file)
axios.post('/upload', formData).then(response => {
this.url = response.data.url
})
}
}
}
</script>
```
4. 在 Flask 中添加上传文件的路由:
```python
from flask import request, jsonify
from app import app, photos
@app.route('/upload', methods=['POST'])
def upload():
if 'photo' in request.files:
filename = photos.save(request.files['photo'])
url = photos.url(filename)
return jsonify({'url': url})
return '', 400
```
在这个例子中,我们使用了 Flask-Uploads 扩展来处理文件上传并且将上传的文件保存在 `static/uploads/photos` 目录下。在 Vue 中,我们使用 `input` 标签和 `FormData` 对象来上传文件,并在上传成功后将文件的 URL 显示出来。在 Flask 中,我们定义了一个路由 `/upload`,用于接收上传的文件,通过 Flask-Uploads 扩展将文件保存到本地,并返回文件的 URL。
阅读全文