当我尝试将图像从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)
答案 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 来帮助您实现目标。