Flutter dio图像上载不起作用会引发服务器500错误,但在邮递员中有效

问题描述 投票:0回答:1

这是我的邮递员请求,带有标题auth令牌。

**this is my postman type with headers <code>auth</code> with token**

我正在尝试上传图像,所有内容都按照dio docs所述进行设置,并且与postman参数完全相同,但是抛出500错误,在这里找不到任何错误。在这里停留了3个小时。

请在这里找到任何错误,我被困在这里,谢谢! (ps:postaman文件仅接受图像文件,即jpg,png其他文件(不包括图像)也将抛出与500错误相同的错误,例如应用抛出)]

我的请求是:

Future requestChangePhoto(
      String wardenToken, String wardenId, File imageFile) async {
    String fileName = imageFile.path.split('/').last;

    print(fileName);
    print(getWardenPhotoChange);

    FormData data = FormData.fromMap({
      "wardenId": "${wardenId.trim()}",
      "photo": await MultipartFile.fromFile(imageFile.path,
          filename: fileName, contentType: MediaType("image", "jpg")),
    });

    Dio dio = new Dio();

    dio.options.headers['content-Type'] = 'application/json';
    dio.options.headers["authorization"] = "$wardenToken";

    await dio
        .post("$getWardenPhotoChange", data: data)
        .then((response) => print(response.data));
  }

这是我的ImagePicker,并要求:

 var imageFile = await ImagePicker.pickImage(source: imageType == ImageType.camera? ImageSource.camera: ImageSource.gallery,

    imageQuality: 50, maxHeight: 500, maxWidth: 500

    );
        print(imageFile);

        NetworkHandler networkHandler = NetworkHandler();
        networkHandler.requestChangePhoto(xybaData.WardenToken, xybaData.wardernId, imageFile);

这是我的错误:

enter image description here

flutter dart image-upload dio
1个回答
0
投票

自最新更新以来,content-type并未将Dio视为“正常”标头。我的意思是它会忽略该标头。

要使其正常工作,请改为设置dio.options.contentType属性。

将其包装,而不是此:

 dio.options.headers['content-Type'] = 'application/json';

尝试一下:

 dio.options.contentType = 'application/json';

奖金

[创建Dio实例时,可以像这样将BaseOptions传递给其构造函数:

Dio dio = Dio(
    BaseOptions(
        headers: {"authorization": wardenToken},
        contentType = "application/json",
    )
);

我相信这是一种更清洁的处理方式:D

© www.soinside.com 2019 - 2024. All rights reserved.