flask+vue的图片上传到数据库中,名字是怎么命名的
时间: 2024-02-25 10:59:14 浏览: 180
在将图片上传到数据库中时,文件名可以使用一些规则来命名,以便更好地管理和查找。以下是一些常用的命名规则:
1. 时间戳命名法
使用当前时间的时间戳作为文件名,如`1634285722.jpg`。这种命名法可以保证文件名的唯一性,并且方便排序和查找。
2. UUID命名法
使用UUID作为文件名,如`8ba3f34e-2ae3-4e8b-b3f4-e22ae3e8b3f4.jpg`。这种命名法可以保证文件名的唯一性,并且不依赖于时间戳。
3. 原始文件名命名法
使用原始文件名作为文件名,如`example.jpg`。这种命名法可以保留原始文件名,并且方便用户查找和识别。
在Flask应用中,可以通过以下代码来获取上传文件的原始文件名:
```
file = request.files['file']
filename = secure_filename(file.filename)
```
其中,`secure_filename`函数可以将文件名转换为安全的文件名格式。
在将文件保存到数据库时,可以使用上述命名法之一来命名文件,并将文件名保存到数据库中。
相关问题
vue2上传图片并预览、py、flask_mysqld将路径写入数据库
在Vue 2中,上传图片并预览通常会使用`vue-file-preview`这样的库来实现在组件内展示图片。步骤如下:
1. 安装依赖:
```bash
npm install vue-file-preview axios
```
2. 在组件中:
- 设置input[type=file]事件监听,获取选择的文件。
- 使用`FileReader`读取文件并转换为Base64格式。
- 预览Base64图片,显示在组件模板上。
```html
<template>
<div>
<input type="file" @change="uploadImage" />
<img :src="previewUrl" v-if="previewUrl" />
</div>
</template>
<script>
import FilePreview from 'vue-file-preview';
export default {
components: { FilePreview },
data() {
return {
file: null,
previewUrl: '',
};
},
methods: {
uploadImage(e) {
const files = e.target.files;
if (files.length > 0) {
this.file = files[0];
this.previewUrl = this.getFileBase64(this.file);
}
},
getFileBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(file);
});
},
},
};
</script>
```
3. Flask + MySQLdb中将图片路径写入数据库:
- 安装Flask和MySQLdb库:
```bash
pip install flask mysqlclient
```
- Python代码示例:
```python
from flask import Flask, request, jsonify
import pymysql
app = Flask(__name__)
conn = pymysql.connect(host='your_host', user='your_user', password='your_password', db='your_db')
@app.route('/upload', methods=['POST'])
def upload_image():
file = request.files['image']
with open('temp.jpg', 'wb') as f:
f.write(file.read())
try:
cursor = conn.cursor()
sql = "INSERT INTO images (path) VALUES ('%s')" % ('temp.jpg',)
cursor.execute(sql)
conn.commit()
cursor.close()
return jsonify({'message': 'Success'})
except Exception as e:
conn.rollback()
return jsonify({'error': str(e)})
if __name__ == '__main__':
app.run(debug=True)
```
阅读全文