Flutter 图片上传

2020-11-11  本文已影响0人  小王在努力

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

上一篇下一篇

猜你喜欢

热点阅读