from rest_framework.views import APIView from rest_framework.permissions import IsAuthenticated from authentication.authentication import CustomTokenAuthentication import uuid import os from django.conf import settings from django.http import JsonResponse from rest_framework import status class MyProtectedUploadfile(APIView): authentication_classes = [CustomTokenAuthentication] # 使用自定义的 Token 认证 permission_classes = [IsAuthenticated] # 需要用户认证才能访问 def post(self, request): user = request.user uuid_str = str(uuid.uuid4()) save_file_path = os.path.join(settings.BASE_DIR, 'upload_file', user.username, uuid_str) os.makedirs(os.path.dirname(save_file_path), exist_ok=True) # 获取上传的文件 uploaded_file = request.FILES.get('file') if not uploaded_file: return JsonResponse({"error": "No file uploaded."}, status=status.HTTP_400_BAD_REQUEST) # 保存文件 try: with open(save_file_path, 'wb+') as destination: for chunk in uploaded_file.chunks(): destination.write(chunk) except: return JsonResponse({"error": "Error saving file."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return JsonResponse({"message": "File uploaded successfully."}, status=status.HTTP_200_OK)