我想将图像上传到 API。我尝试了此代码,但出现错误
文件未找到
如果我使用 Postman 发送图像文件,它会成功运行。在这里我附上了邮递员的截图,上传我给的图片image path
,除了我的文件,我想附上用户id
请告诉我一个解决方案?谢谢你
这是我的代码
class _UserProfileEditState extends State<UserProfileEdit> {
// String imagepath='';
File _profileImage;
String base64Image;
DatabaseHelper databaseHelper = new DatabaseHelper();
int parentid;
_handleimagefromgallary() async {
File imagefile = await ImagePicker.pickImage(source: ImageSource.gallery);
if(imagefile!=null) {
setState(() {
_profileImage = imagefile;
});
}
}
_displayprofilephoto()
{
if(_profileImage==null)
{
if(widget.parentsInfo.data.photo==null)
{
return AssetImage('assets/images/parentimg.png');
}
else
{
return CachedNetworkImageProvider(widget.parentsInfo.data.photo);
}
}
else
{
return FileImage(_profileImage);
}
}
@override
Widget build(BuildContext context) {
parentid=widget.parentsInfo.data.id;
return Scaffold(
appBar: AppBar(
title: Center(
child: Text('Edit Profile'),
),
),
body: SingleChildScrollView(
child: Container(
height: MediaQuery.of(context).size.height * 1.5,
child: Column(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Container(
height: 160.0,
width: 160.0, //MediaQuery.of(context).size.width,
child: new CircleAvatar(
radius: 50.0,
backgroundColor: Colors.green,
backgroundImage: _displayprofilephoto(),
),
),
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(''),
InkWell(
child: Icon(Icons.add_photo_alternate),
onTap:_handleimagefromgallary,
),
],
),
),
showpdatebutton(),
这是上传的方法:
Future _updateprofilepicture() async{
// _profileImage=await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
// var path = await FlutterAbsolutePath.getAbsolutePath(images[i].identifier);
// var path =await FlutterAbsolutePath.getAbsolutePath(_profileImage.absolute.path);
var path=await FlutterAbsolutePath.getAbsolutePath(_profileImage.path);
if(path==null)
{
}
else
{
// call controller
print(path);
String id=parentid.toString();
databaseHelper.parentprofileupdate(path, id);
// databaseHelper.parentprofileupdate(_profileImage, id);
}
}
Widget showpdatebutton() {
if(_profileImage!=null)
{
return OutlineButton(
child: Text('Update Profile Picture'),
onPressed: (){
_updateprofilepicture();
}
);
}
else
{
return Container();
}
}
}
我的数据库助手类:
Future<ParentProfileUpdate> parentprofileupdate(String path,String id) async
{
Map mapValue;
var data;
final prefs = await SharedPreferences.getInstance();
final key = 'token';
final value = prefs.get(key ) ?? 0;
String myUrl = "$serverUrl/api/v1/upload_parent_image";
await http.post(myUrl,
headers: {
// 'Accept':'application/json',
"HttpHeaders.contentTypeHeader": "application/json",
'Authorization' : 'Bearer $value'
},
body: {
"photo" :path,
"id":id,
}).then((response) {
status = response.body.contains('error');
mapValue=json.decode(response.body);
var data = json.decode(response.body);
print(data);
});
}