flutter - 我如何在颤动中使用 dio 发布图像
问题描述
我想通过dio包以jpg格式将图像发送到服务器,我该怎么做?
选择图像方法:
void _chooseImageCamera() async {
file = await ImagePicker.pickImage(source: ImageSource.camera,imageQuality: 50);
setState(() {
file = file;
print(file);
});
上传图片方法:
void _upload() async {
if (file == null) return;
String fileName = file.path.split('/').last;
Map<String, dynamic> formData = {
"image": await MultipartFile.fromFile(file.path,filename: fileName),
};
await serverRequest().getRequest("/Information", formData).then((onValue) {
print(json.decode(onValue));
});
有人帮我吗?
谢谢
解决方案
您也可以为此目的使用 http
Future<String> uploadImage(Asset asset,String orderId) async {
// String to uri
Uri uri = Uri.parse('Your URL');
// create multipart request
http.MultipartRequest request = http.MultipartRequest("POST", uri);
ByteData byteData = await asset.getByteData();
List<int> imageData = byteData.buffer.asUint8List();
http.MultipartFile multipartFile = http.MultipartFile.fromBytes(
'image',
imageData,
filename: '${DateTime.now().millisecondsSinceEpoch}.jpg',
contentType: MediaType("image", "jpg"),
);
// Add field to your request
request.fields['FieldName'] = fieldValue;
// add file to multipart
request.files.add(multipartFile);
// send
var response = await request.send();
// Decode response
final respStr = await response.stream.bytesToString();
return respStr;
}
推荐阅读
- c# - 尝试了 multilpe 变体,但计时器不会开始计时。问题出在哪里?
- android - 可以在 Google Home 上创建活动日志文件吗?
- java - Struts2 - HTTP 状态 404 - /struts2Test/testAction.action
- c# - 如何在框架传递测试上下文中只使用一次类初始化和类清理
- java - SpringBoot @interface 总结不同的注解
- c# - 我可以为 Azure Functions 绑定表达式配置默认值吗?
- html - 单击移动设备时不显示悬停文本
- linux - 跟踪系统上的 mount(2) 和 unmount(2) 调用者
- csv - 如何在 Azure 数据工厂 (V2) 数据流中参数化源的分隔符?
- mysql - 我在 mysql 创建函数语句中遇到错误