一、保存文件
1.使用os保存
通过文件的哈希值命名,可以避免文件重复或文件名重复
import hashlib,json,os
def add_file(request):
if request.method == 'POST':
file_obj = request.FILES.get('file') # 获取文件
file_data = file_obj.file.read() #读取文件
m = hashlib.md5() #创建md5对象
m.update(file_data) #更新md5对象
file_hash = m.hexdigest() #哈希值
filename = file_hash + os.path.splitext(file_obj.name)[1]
# filename = os.path.join(settings.MEDIA_ROOT,"img",filename)
filename = os.path.join(settings.MEDIA_ROOT,filename)
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, 'wb') as f:
f.write(file_data)
redata = {
'code': 200,
'msg':'上传成功',
'url':filename
}
return HttpResponse(json.dumps(redata, indent=4))
2.
二、查看图片(以下配置是用在测试时查看图片,及DEBUG = True,当为False时失效,交给代理服务器)
1、配置访问路由
settings.py
MEDIA_URL = '/media/' #(名字可以改)(访问图片的路由http://127.0.0.1/media/img/1645887488906.png)
MEDIA_ROOT = os.path.join('media')#表示创建在当前项目目录下
2、添加主路由
urls.py(主路由)
......
from django.conf import settings #导入
from django.conf.urls.static import static #导入
urlpatterns = [.......]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #配置url