Как скачать zip-файл, используя метод GET в Flask-Restplus Swagger UI - PullRequest
0 голосов
/ 12 июня 2019

Я хочу создать API, который может принимать видеофайл, используя метод POST, а метод POST вернет имя файла zip после выполнения обработки на видео. Используя это имя, API должен вернуть zip-файл, используя метод GET. Я не могу загрузить файл с помощью запроса GET из пользовательского интерфейса Swagger Flask-Restplus.

Я попробовал какое-то решение из интернета, но не могу его решить. Я попытался использовать @api.representation('application/zip'), который может изменить тип содержимого ответа, но также не может загрузить его.


upload_parser = api.parser()
upload_parser.add_argument('file', location='files', type=FileStorage, required=True)

download_parser = api.parser()
download_parser.add_argument('filename', type=str, required=True)

....

@api.route('/upload')
class Upload(Resource):
    @api.expect(upload_parser)
    def post(self):
        args = upload_parser.parse_args()
        uploaded_file = args['file']  # This is FileStorage instance
        uploaded_file.save('F:/IT Sem-7/Internship/demo/uploaded_file.mp4')
        zipObj = ZipFile('uploaded_file.zip', 'w')
        zipObj.write('uploaded_file.mp4')
        zipObj.close()
        return {'Output': 'file uploaded successfully', 'filename': 'uploaded_file.zip'}, 201

@api.route('/download')
@api.representation('application/zip')
class Download(Resource):
    @api.expect(download_parser)
    def get(self):
        args = upload_parser.parse_args()
        return send_file('F:/IT Sem-7/Internship/demo/'+args['filename'], 
        mimetype='application/zip', attachment_filename=args['filename'], 
        as_attachment=True)
        #return send_from_directory('F:/IT Sem-7/Internship/demo/', 
        args['filename'])

Ошибка из Swagger UI Swagger UI Error Image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...