from datetime import datetime
from django.conf import settings
import random
import os
import uuid
defget_file_name_random_date():
filename = datetime.now().strftime('%Y-%m-%d').replace('-','')
filename +=str(random.randint(1000,9999))return file_name
defupdate_file(file,path:str,type:int):
new_name =""iftype==1:
new_name = get_file_name_random_date()eliftype==2:
new_name = uuid.uuid4().hex
file_name = settings.MEDIA_ROOT + os.path.sep + path + os.path.sep + new_name + os.path.splitext(file.name)[1]try:
f =open(file_name,'wb')for i infile.chunks():
f.write(i)
f.close()return{'status':True,'data':new_name+os.path.splitext(file.name)[1]}except Exception as e:return{'status':False,'error':'文件写磁盘出现异常'}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
二、视图中写代码
from rest_framework.decorators import action
from rest_framework import status
from rest_framework.response import Response
@action(methods=['post','get'],detail=False)defupload(self,request,*args,**kwargs):#接收文件
rev_file = request.FILES.get('file')ifnot rev_file:return Response("上传失败!")
res = myupload.update_file(rev_file,'images',2)return Response(res)