老规矩,屁话不多说,直接上代码
1.导入图片选择框架 image_picker: ^0.6.7+21
导入网络请求框架 dio: ^3.0.10
版本号自己可以去pub.dev上找合适自己的
2.选择图片分2种情况:
// type可根据自己需求定义,我这里定位为2种情况
void uploadHeader(String type) async {
PickedFile pickedFile;
if (type == '拍照') {
// (1)用相机拍照:
pickedFile = await picker.getImage(source: ImageSource.camera);
}else {
// (1)选择相册的照片:
pickedFile = await picker.getImage(source: ImageSource.gallery);
}
//获取图片路径
String path = pickedFile.path;
//设置图片名字
var name = path.substring(path.lastIndexOf("/") + 1, path.length);
//设置上传接口所需的参数,这里需要根据自己实际的服务器情况填写,我这边是需要添加一个scene字段
FormData formdata = FormData.fromMap({
"file": await MultipartFile.fromFile(path, filename:name),
'scene':'other'
});
Dio dio = new Dio();
// 直接发起请求,将上面的data带入进去
var respone = await dio.post<String>('http://192.168.4.5:8002/uploaders', data: formdata);
if (respone.statusCode == 200) {
print('上传成功');
// 这里具体看后台服务器如何返回数据,一般都是返回云服务器的图片地址
print(respone);
var data= jsonDecode(respone.toString());
print(data);
print(data['url']);
}
}
大功搞成!
网友评论