from django.views.decorators.http import require_http_methods from django.views.decorators.csrf import csrf_exempt from .models import Files as Files_models from admin_site.settings import BASE_DIR from admin_site.utils import setError, setSuccess, userPersonToDictionary, is_token from admin_site.decorator import my_decorator from django.contrib.auth.decorators import login_required import os from django.http import HttpResponse, Http404, StreamingHttpResponse, JsonResponse from .tasks import add, del_file from django.core.files.storage import FileSystemStorage @csrf_exempt @require_http_methods(["POST", "GET"]) def index(request): # print(request.path) # login_required(request) # print(request.GET.get('token')) token = request.GET.get('token') print(25, os.getcwd()) try: error = is_token(token) print(error) # if error: # return error file_path = os.getcwd() + request.path print(file_path) response = StreamingHttpResponse(open(file_path, 'rb')) response['content_type'] = "application/octet-stream" response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path) return response except Exception: raise Http404 # return HttpResponse(setError("文件不存在 index")) @csrf_exempt @require_http_methods(["POST", "GET"]) def info(request): return HttpResponse(setError("文件不存在 info")) @csrf_exempt @require_http_methods(["POST", "GET"]) def uploadFile(request): # print(request.FILES.file) # 获取上传的文件对象 uploaded_file = request.FILES['file'] # 创建文件存储系统对象并保存文件 fs = FileSystemStorage() file_path = os.path.join(BASE_DIR, 'download', uploaded_file.name) file = fs.save(file_path, uploaded_file) print(54, file) params = { # download / python_93040206 - master.zip # "file_path": "download/" + uploaded_file.name "file_path": file } file_add = Files_models(**params) file_add.save() return JsonResponse(setSuccess(msg='更新成功', data=file_add.id)); @csrf_exempt @require_http_methods(["POST", "GET"]) def test(request): # result = waste_time.delay(2, 3) # return HttpResponse(result.task_id) # return HttpResponse(result.task_id) # return HttpResponse(setError("文件不存在 info")) result = add.delay(1, 2) return HttpResponse(result.get()) @csrf_exempt @require_http_methods(["POST", "GET"]) def del_file_view(request): del_file() return JsonResponse(setSuccess(msg='更新成功', data=True))