1、导入相关的库
dio: ^3.0.9
image_picker: ^0.6.7+14
2、代码的实现
//上传图片demo
static Future<String> uploadTask() async{
//上传域名
final url = "xxx";
//上传携带参数
var map = new Map<String, dynamic>();
String time = appTime.timeStamp();
String auto = "key" + time;
map.addAll({"uuid":"807D845D-0787-43B4-B797-139EB305E756"});
map.addAll({"from":"6"});
map.addAll({"time":time});
map.addAll({"auth_key":Md5.md5String(auto)});
print(map);
//上传文件
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
final path = image.path;
var name = path.substring(path.lastIndexOf("/") + 1, path.length);
print(name);
print(path);
FormData formData = new FormData.fromMap({
"name" :"image",//文件名
"fileName" :"image.jpeg",
"mimeType" :"image/jpeg",
"image": await MultipartFile.fromFile(path, filename:name),
});
Dio dio = new Dio();
BaseOptions options = BaseOptions();
options.connectTimeout = 10 * 1000;
options.receiveTimeout = 20 * 1000;
dio.options = options;
Response response = await dio.post(url,data:formData,queryParameters:map,onSendProgress: (int count, int total) {
print('-----------${count / total}-------------'); //上传进度
});
var code = response.statusCode;
return await response.data.toString();
}
注意
a、name:是服务端视频定义的、比如服务端定义是file = xxxx.jpeg ,那么这里name就改为file
b、fileName:图片是image.jpeg,视频则是video.mp4
c、mimeType:图片是image/jpeg,视频则是video/mp4
d、4个参数:from time uuid auth_key
网友评论