Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart '_文件';不是类型为';字符串';内铸_Dart_Flutter - Fatal编程技术网

Dart '_文件';不是类型为';字符串';内铸

Dart '_文件';不是类型为';字符串';内铸,dart,flutter,Dart,Flutter,当我试图从Flatter向服务器上传一个图像时,出现了这个错误。我不知道如何将文件传递给HTTPPOSST方法,但我使用image\u picker插件获取了图像并获得了文件路径 我的文件路径是 :I/颤振(9123):文件: “/storage/emulated/0/Android/data/com.example.myapp/files/Pictures/2798d03d-2c6b-4f80-8198-94866DFC4596202810321680196242.jpg” 我的发帖方法是这样

当我试图从Flatter向服务器上传一个图像时,出现了这个错误。我不知道如何将文件传递给HTTPPOSST方法,但我使用
image\u picker
插件获取了图像并获得了文件路径

我的文件路径是

:I/颤振(9123):文件: “/storage/emulated/0/Android/data/com.example.myapp/files/Pictures/2798d03d-2c6b-4f80-8198-94866DFC4596202810321680196242.jpg”

我的发帖方法是这样的

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);
错误将如下所示:

[错误:颤振/shell/common/shell.cc(181)]省道错误:未处理 例外:E/flatter(9123):类型“\u File”不是类型的子类型 类型cast E/FLATTER(9123)中的“字符串”:#0对象。_as (dart:core/runtime/libobject_patch.dart:74:25)E/flatter(9123):#1
卡斯特地图。(省道:内部/铸造省道:323:25) E/颤振(9123):#2
__InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.forEach (dart:collection/runtime/libcompact\u hash.dart:365:8)E/flift( 9123:#3 CastMap.forEach(省道:内部/铸造。省道:322:13)


代码中的
文件
看起来像复数,但代码不显示详细信息

这是获取单个文件的代码,它作为一个数组发送,可以在其中添加多个条目
[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);

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

http
http.
from
http.post
来自哪里?请将导入添加到您的问题中。我刚刚使用了void upload()异步方法
文件
来自何处?“刚刚使用了void upload()异步方法”,抱歉,不知道这意味着什么。此方法在不使用图像的情况下有效,,,但是当我上传图像时,只有这个错误才会发生。请尝试在项目目录中执行
flatter clean
,然后重试。当我使用文件日志时,消息将是:file:'/storage/simulated/0/Android/data/com.example.myapp/files/Pictures/2798d03d-2c6b-4f80-8198-94866dfc4595966202810321680196242。jpg'现在它的返回类型“List”不是CastType中“String”类型的子类型请提供更完整的信息。哪一行导致此错误?也许您只需要
fileContentBase64
而不是
[fileContentBase64]
。我假设是一个列表,因为你在问题中使用了复数
文件。