flutter 上传照片,已及上传阿里云;

调用相机;

void _getImage() async {
    try {
      var image = await ImagePicker.pickImage(
          source: ImageSource.gallery, maxWidth: 800);
      print(image);  

      uploadImage(image.path, '0', onSuccess: (data) {
          if (data != null) {
            setState(() {
              _info = data??'';
            });
            
          }
        });
     
    } catch (e) {
      Toast.show("没有权限,无法打开相册", duration: 1000);
    }
  }

上传阿里云前端直传;

///上传图片
  Future uploadImage(String imagePath, String vin,
      {Function(String reslut) onSuccess}) async {
    String name = DateTime.now().millisecondsSinceEpoch.toString() +
        imagePath.substring(imagePath.lastIndexOf("."));
    await DioUtil.instance
        .requestEntityNetwork(Method.get, "${HttpApi.OSS_CAR_SIGNATURE}/$vin",
            onSuccess: (data) async { //这个是去拿上传参数,包括地址签名等
      FormData formData = FormData.from({
        'key': data['dir'] + name,
        'policy': data['policy'],
        'OSSAccessKeyId': data['accessid'],
        'success_action_status': 200,
        'Signature': data['signature'],
        'Filename': name,
        'file': UploadFileInfo(File(imagePath), name)
      });
      Dio dio = Dio();
      dio.options.responseType = ResponseType.plain;
      try {
        Response response = await dio.post(data['host'], data: formData);
        String imageUrl = data['host'] + '/' + data['dir'] + name;
        if (response.statusCode == 200) {
          if (onSuccess != null) {
            onSuccess(imageUrl);
          }
        }
      } on DioError catch (e) {
        Toast.show(e.message);
      }
    }, onError: (data) {
      Toast.show("获取签名信息失败");
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值