2023-04-21 07:44:01 +00:00
|
|
|
import mimetypes
|
|
|
|
|
2022-04-05 05:22:26 +00:00
|
|
|
from rest_framework import serializers
|
|
|
|
|
|
|
|
from dvadmin.system.models import FileList
|
|
|
|
from dvadmin.utils.serializers import CustomModelSerializer
|
|
|
|
from dvadmin.utils.viewset import CustomModelViewSet
|
|
|
|
|
|
|
|
|
|
|
|
class FileSerializer(CustomModelSerializer):
|
|
|
|
url = serializers.SerializerMethodField(read_only=True)
|
|
|
|
|
|
|
|
def get_url(self, instance):
|
2023-04-21 06:41:00 +00:00
|
|
|
# return 'media/' + str(instance.url)
|
|
|
|
return instance.file_url or 'media/' + str(instance.url)
|
2022-04-05 05:22:26 +00:00
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = FileList
|
|
|
|
fields = "__all__"
|
|
|
|
|
|
|
|
def create(self, validated_data):
|
|
|
|
validated_data['name'] = str(self.initial_data.get('file'))
|
2023-04-21 07:44:01 +00:00
|
|
|
# 1. 是否需要备份到本地服务器
|
|
|
|
# 2. 需要备份就把 validated_data['url'] 赋值
|
2022-04-05 05:22:26 +00:00
|
|
|
validated_data['url'] = self.initial_data.get('file')
|
2023-04-21 07:44:01 +00:00
|
|
|
# 3. 上传到云对象存储
|
|
|
|
# 4. 如果不需要备份,需要把
|
|
|
|
# validated_data['size']
|
|
|
|
# validated_data['file_url']
|
|
|
|
# validated_data['md5']
|
|
|
|
# validated_data['engine']
|
|
|
|
# 5. 获取一下媒体类型 mime_type 进行保存
|
|
|
|
validated_data['mime_type'] = mimetypes.guess_type(self.initial_data.get('file'))[0]
|
2022-04-05 05:22:26 +00:00
|
|
|
return super().create(validated_data)
|
|
|
|
|
|
|
|
|
|
|
|
class FileViewSet(CustomModelViewSet):
|
|
|
|
"""
|
|
|
|
文件管理接口
|
|
|
|
list:查询
|
|
|
|
create:新增
|
|
|
|
update:修改
|
|
|
|
retrieve:单例
|
|
|
|
destroy:删除
|
|
|
|
"""
|
|
|
|
queryset = FileList.objects.all()
|
|
|
|
serializer_class = FileSerializer
|
|
|
|
filter_fields = ['name', ]
|
2022-04-15 13:26:01 +00:00
|
|
|
permission_classes = []
|