代码语言:javascript复制文件保存位置配置
import os
#上传文件的位置 (项目内 media)(项目外 /media)
MEDIA_ROOT = os.path.join('media')
访问文件
用在测试时查看图片,及DEBUG = True
,当为False
时失效,交给代理服务器
from django.conf import settings #导入
from django.conf.urls.static import static #导入
urlpatterns = [.......]
urlpatterns = static('media', document_root=settings.MEDIA_ROOT) #配置url
保存文件
通过文件的哈希值命名,可以避免文件重复或文件名重复
代码语言:javascript复制 @action(methods=['post'],detail=False,url_path="file")
def addFile(self,request):
'''
添加播放该广告的文件
采用文件的哈希值命名
'''
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,"advertising",filename)
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, 'wb') as f:
f.write(file_data)
return Response({"url":'/' filename})