类型转换中的'_File'不是'String'类型的子类型

时间:2018-09-11 12:39:05

标签: dart flutter

当我尝试将图像从Flutter上传到服务器时,会发生此错误。我不知道如何将文件传递给HTTP POSST方法,但是我拍摄了图片并使用image_picker插件获取了文件路径。

我的文件路径是

  

:I / flutter(9123):文件:   '/storage/emulated/0/Android/data/com.example.myapp/files/Pictures/2798d03d-2c6b-4f80-8198-94866dfc45962028103221221680196242.jpg'

我的POST方法就像;

var response = await 

http.post("http://206.189.92.174:4000/API/Posts/Cube_Post_Submit",

    body :
       {
        'attachments' : files ,
       'User_Id' : "5acc5d6e1295332c28f7e205",
       'Cubes_Id' : jsonstring,
       'Post_Text' : "hello",
       'Post_Category' : "Story",
       'Post_Link': ""
       }
    );
   print(response.body);

错误将是这样的:

  

[错误:flutter / shell / common / shell.cc(181)] Dart错误:未处理   例外:E / flutter(9123):类型'_File'不是类型的子类型   类型为E / flutter(9123)的'String':#0 Object._as   (dart:core / runtime / libobject_patch.dart:74:25)E / flutter(9123):#1
  CastMap.forEach。 (dart:_internal / cast.dart:323:25)   E / flutter(9123):#2
  __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach   (dart:collection / runtime / libcompact_hash.dart:365:8)E / flutter(   9123):#3 CastMap.forEach(dart:_internal / cast.dart:322:13)

2 个答案:

答案 0 :(得分:0)

您代码中的

files看起来像是复数形式,但是您的代码没有显示详细信息。

这是获取单个文件的代码,并作为数组发送,可以在其中添加多个条目 [fileContentBase64][file1ContentBase64, file2ContentBase64, file3ContentBase64]

import 'dart:convert';

...
var fileContent = file.readAsBytesSync();
var fileContentBase64 = base64.encode(fileContent); 

var response = await http.post("http://206.189.92.174:4000/API/Posts/Cube_Post_Submit",

    body :
       {
        'attachments' : [fileContentBase64] ,
       'User_Id' : "5acc5d6e1295332c28f7e205",
       'Cubes_Id' : jsonstring,
       'Post_Text' : "hello",
       'Post_Category' : "Story",
       'Post_Link': ""
       }
    );
   print(response.body);

答案 1 :(得分:0)

您可以使用详细示例 here 来帮助您实现目标。