class JobImportApiView(APIView):
parser_classes = [MultiPartParser]
manual_parameters = [
openapi.Parameter(name='file',
in_=openapi.IN_FORM,
type=openapi.TYPE_FILE,
required=True,
description='上传文件'),
openapi.Parameter(name='project_id',
in_=openapi.IN_FORM,
type=openapi.TYPE_NUMBER,
required=True,
description='项目id'),
]
@swagger_auto_schema(manual_parameters=manual_parameters, operation_description='新增数据')
@transaction.atomic
def post(self, request, *args, **kwargs):
# file_obj = request.data['file']
project_id = request.POST.get('project_id')
file_obj = request.FILES.get('file')
user_id = request.user.id
zip_dir = f"media/tmp/{project_id}/job/"
zip_url = f"{zip_dir}/{user_id}.zip"
if not os.path.isdir(zip_dir):
os.makedirs(zip_dir)
with open(zip_url, 'wb') as f:
for chunk in file_obj.chunks():
f.write(chunk)
return JsonResponse(R().ok().data(zip_url))
django yasg-swagger 文件上传自定义参数
于 2023-03-01 11:18:49 首次发布