flutter - 在 Flutter 中使用 post 方法上传图片
问题描述
我必须使用 Flutter 中的提供程序将图像从画廊上传到服务器。
这是文件选择器
_loadPicker(ImageSource source) async {
File picked = await ImagePicker.pickImage(source: ImageSource.gallery);
print(picked);
if (picked != null) {
final response = await Provider.of<ProfilePictureUpdate>(context, listen:
false).profilePicUpdate(picked);
if (response["status"] ) {
Fluttertoast.showToast(msg: response["title"]);
}
else {
Fluttertoast.showToast(msg: response["title"]);
}
}
}
这是post方法
Future<Map<String, dynamic>> profilePicUpdate(picked) async {
try {
final response = await ApiRequest.send(route: "profile/update/picture", method: "POST",
body: {
" photo_url" : picked,
});
if (response.statusCode == 200 ) {
return {
"status": true,
"title" : response["title"]
};
}
}
解决方案
如果你想发送图像给你,你必须在'Dio'类似的网络(enctype )中使用formData(多部分)。在http中,你也可以使用multipart。
必须记住你使用的图像总是不一样的,这里当服务器端参数名称相同时使用这个字段。
class ImageRepository {
Future<dynamic> uploadImage(filepath) async {
FormData formData = FormData.fromMap({
"image": await MultipartFile.fromFile(filepath,
filename: filepath.split('/').last)
});
var response = await Dio().post(
url,
data: formData),
);
print(response.data);
if (response.statusCode == 200) {
return 'Image Upload';
} else {
throw Exception 'Problem occour';
}
}
推荐阅读
- azure - 在 CircleCI 中找不到 postgres_1 的容器
- css - 第一个,第二个和第三个元素单独使用仅 CSS
- sql - 选择几行到几个变量中 - Oracle PL/SQL
- html - 在网页问题上粘贴元素(子菜单)
- html - 自定义 CAF 接收器 html
- c# - 一次验证4个组合框的依赖数据c#
- python - 从列表中直接在“@”符号之后的字符串中提取数值
- python-3.x - 对 Geopandas 与 VegaLite 进行比对的最佳方式/命令是什么?
- javascript - 将 JS 变量/变量值从第一个 js 文件中的函数传递到第二个文件
- android-studio - Flutter:无法编辑 pubspec.yml 文件,尝试编辑 pubspec.yml 文件时显示“文件为只读”弹出警告