import os
import datetime
from django.core.files.storage import default_storage
@action(detail=False, methods=['post'], url_path='upload')
def upload(self, request):
# upload/2024/10/07/178bb3d5cfc06006d1d884951a20ff3.jpg
upload_obj = request.FILES.get('file')
file_name = upload_obj.name # 工作簿1.xlsx
date_path = datetime.datetime.now().strftime('%Y/%m/%d') # 2024/10/13
upload_path = settings.UPLOAD_PATH # upload/
# 获取文件路径
file_path = os.path.join(upload_path, date_path, file_name) # upload/2024/10/13\工作簿1.xlsx
# 可保存文件路径
can_save_path = default_storage.get_available_name(file_path) # upload/2024/10/13/工作簿1.xlsx
print(can_save_path)
# 保存
save_path = default_storage.save(can_save_path, upload_obj) # upload/2024/10/13/工作簿1.xlsx
# 获取相对url(本地路径)
local_url = default_storage.url(save_path)
# 获取绝对url
abs_url = request.build_absolute_uri(local_url)
context = {
'local_path': local_url,
'url': abs_url
}
return Response(context)
