Невозможно проанализировать поля формы данных на серверах, отправленных с флаттера - PullRequest
0 голосов
/ 13 июня 2019

Я использую https://pub.dev/packages/dio для запросов на флаттер к серверу. Ее мой код:

Future<bool> initialConfig(String name, String status, File image) async {
    try {
      this._dio = Dio(options);
      final id = await UserKeyManagement().retriveKey();
      FormData formData = FormData.from(<String, dynamic>{
        "profile_pic": UploadFileInfo(image, image.path, contentType: ContentType.parse(lookupMimeType(image.path))),
        'id': id,
        'display_name': name,
        'status': status,
      });
      final response = await _dio.post('/initial_setup', data: formData);
      return response.data['success'];
    }catch(e) {
      return false;
    }
 }

Вот мой код сервера фляг для конкретного запроса:

from flask_restful import Resource, reqparse
import werkzeug
from firebase_admin import storage
from uuid import uuid4
from database.shared_db import db
from database.model.display_info_model import DisplayInfoModel

class InitialSetup(Resource):
    def post(self):
        try:
            parser = reqparse.RequestParser()
            parser.add_argument('profile_pic', type=werkzeug.FileStorage, location='files')
            parser.add_argument('display_name', type=str, location='form')
            parser.add_argument('id', type=str, location='form')
            parser.add_argument('status', type=str, location='form')
            args = parser.parse_args()
            bucket = storage.bucket()
            image = args['profile_pic']
            img_name = 'profile_pic/' + str(uuid4())
            blob = bucket.blob(img_name)
            blob.upload_from_file(file_obj=image, content_type=image.content_type)
            temp = DisplayInfoModel.query.filter_by(user_id=args['id']).first()
            temp.display_name = args['display_name']
            temp.status = args['status']
            temp.profile_pic = img_name
            db.session.commit()
            return {
                'success': True
            }
        except:
            return {
                'success': False
            }

Я могу отлично выполнить запрос от почтальона со всеми параметрами в данных формы. Однако он показывает внутреннюю ошибку сервера, когда я пытаюсь из флаттера. Так может кто-нибудь помочь?

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