first commit
This commit is contained in:
36
WebAdmin/upload_avatar.py
Executable file
36
WebAdmin/upload_avatar.py
Executable file
@@ -0,0 +1,36 @@
|
||||
import os
|
||||
import uuid
|
||||
from django.conf import settings
|
||||
from django.http import JsonResponse
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from .base import logger
|
||||
|
||||
@csrf_exempt
|
||||
@require_http_methods(["POST"])
|
||||
def upload_avatar(request):
|
||||
"""
|
||||
上传图片的接口,返回图片URL
|
||||
"""
|
||||
try:
|
||||
if not request.user.is_authenticated:
|
||||
return JsonResponse({'code': 401, 'message': '用户未登录'}, status=401)
|
||||
|
||||
if 'avatar' not in request.FILES:
|
||||
return JsonResponse({'code': 400, 'message': '没有上传图片'}, status=400)
|
||||
|
||||
avatar_file = request.FILES['avatar']
|
||||
|
||||
# 保存图片到指定目录
|
||||
avatar_filename = f"{uuid.uuid4()}.{avatar_file.name.split('.')[-1]}"
|
||||
avatar_path = os.path.join(settings.MEDIA_ROOT, 'avatars', avatar_filename)
|
||||
with open(avatar_path, 'wb') as f:
|
||||
for chunk in avatar_file.chunks():
|
||||
f.write(chunk)
|
||||
|
||||
avatar_url = f"{settings.DOMAIN}{settings.MEDIA_URL}avatars/{avatar_filename}"
|
||||
|
||||
return JsonResponse({'code': 200, 'avatar_url': avatar_url})
|
||||
except Exception as e:
|
||||
logger.error(f"Error uploading avatar: {str(e)}")
|
||||
return JsonResponse({"code": 500, "message": str(e)}, status=500)
|
||||
Reference in New Issue
Block a user