首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图使用DIO上传图像。(错误)

试图使用DIO上传图像。(错误)
EN

Stack Overflow用户
提问于 2022-04-14 21:26:30
回答 1查看 795关注 0票数 0

你好,希望你们一切都好。我试着上传一张图片,但我坚持了下来,并得到了一些错误。

代码语言:javascript
复制
I/flutter (23022): El error es: DioError [DioErrorType.other]: Converting object to an encodable object failed: FormData
I/flutter (23022): #0      _JsonStringifier.writeObject (dart:convert/json.dart:794:7)
I/flutter (23022): #1      _JsonStringStringifier.printOn (dart:convert/json.dart:983:17)
I/flutter (23022): #2      _JsonStringStringifier.stringify (dart:convert/json.dart:968:5)
I/flutter (23022): #3      JsonEncoder.convert (dart:convert/json.dart:345:30)
I/flutter (23022): #4      JsonCodec.encode (dart:convert/json.dart:231:45)
I/flutter (23022): #5      DefaultTransformer.transformRequest (package:dio/src/transformer.dart:77:21)
I/flutter (23022): #6      DioMixin._transformData (package:dio/src/dio_mixin.dart:735:39)
I/flutter (23022): #7      DioMixin._dispatchRequest (package:dio/src/dio_mixin.dart:656:26)
I/flutter (23022): #8      DioMixin.fetch.<anonymous closure> (package:dio/src/dio_mixin.dart:605:7)
I/flutter (23022): #9      DioMixin.fetch._requestInterceptorWrapper.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:dio/src/dio_mixin.dart:517:28)
I/flutter (23022): #10     DioMixin.checkIfNeedEnqueue (package:dio/src/dio_mixin.dart:789:22)
I/flutter (23022): #11     DioMixin.fetch._requestInterceptorWrapper.<ano

这是我的文件:https://github.com/bRUNS123/hydra

我希望有人能帮我!

这是我上传的功能:

代码语言:javascript
复制
  void _uploadFile(filePath) async {
    try {
      String filename = p.basename(filePath!.path.split('/').last);

      dio.FormData.fromMap({
        'files': {
          await dio.MultipartFile.fromFile(
            filePath.path,
            filename: filename,
            contentType: MediaType(
              'image',
              'jpeg',
            ),
          ),
        },
        'app_label': 'files',
        'app_model': 'file',
      });

      await Dio()
          .post('http://10.0.2.2:8000/objects/', data: FormData)
          .then((value) {
        // if (value.toString() == '1') {
        //   print('La foto se ha subido correctamente');
        // } else {
        //   print('Hubo un error');
        // }
      });
    } catch (e) {
      print('El error es: $e');
    }
  }

谢谢你的阅读,我希望有人能帮我!祝您今天愉快!

我已经和邮递员检查过我的服务器了。

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 09:21:37

使用来自MultipartRequest包的http类(最简单的方法)。

代码语言:javascript
复制
try {
   MultipartRequest request = MultipartRequest(
    'POST',
    Uri.parse("http://10.0.2.2:8000/objects/"),
  );
  request.files.add(
    MultipartFile.fromBytes(
      'files',
      (await File(filePath).readAsBytes()),
      filename: p.basename(filePath.split('/').last);,
    ),
  );
  request.fields.addAll(
    {
      'app_label': 'files',
      'app_model': 'file',
    },
  );
  
  // Parse JSON Response from server {"success" : true, "message" : "..."}
  var json = jsonDecode(
    String.fromCharCodes(
      await (await request.send()).stream.toBytes(),
    ),
  );
} catch (e) {
  debugPrint(e.toString());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71877795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档