pdf upload
All checks were successful
Deploy to Server / deploy (push) Successful in 32s

This commit is contained in:
jeremygan2021
2026-03-22 21:15:34 +08:00
parent 0274e59fd9
commit 2e05322909
5 changed files with 130 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ from .serializers import (
ProjectSerializer, ProjectFileSerializer,
ScoreSerializer, CommentSerializer, ScoreDimensionSerializer
)
import uuid
from rest_framework.pagination import PageNumberPagination
@@ -200,13 +201,26 @@ class ProjectFileViewSet(viewsets.ModelViewSet):
return ProjectFile.objects.all()
def perform_create(self, serializer):
# 简单权限控制:只有项目拥有者可以上传
project = serializer.validated_data['project']
user = get_current_wechat_user(self.request)
if not user or project.contestant.user != user:
raise serializers.ValidationError("无权上传文件")
file_obj = serializer.validated_data.get('file')
if file_obj:
try:
from ai_services.services import AliyunTingwuService
service = AliyunTingwuService()
if service.bucket:
ext = file_obj.name.split('.')[-1] if '.' in file_obj.name else ''
file_name = f"competitions/projects/{project.id}/{uuid.uuid4()}.{ext}"
oss_url = service.upload_to_oss(file_obj, file_name, day=30)
serializer.save(file_url=oss_url, file=None)
return
except Exception as e:
print(f"OSS upload failed, using local storage: {e}")
serializer.save()