美文网首页
flutter 上传照片,已及上传阿里云;

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

作者: 曾经也是个少年 | 来源:发表于2019-12-12 16:43 被阅读0次

调用相机;

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("获取签名信息失败");
    });

相关文章

网友评论

      本文标题:flutter 上传照片,已及上传阿里云;

      本文链接:https://www.haomeiwen.com/subject/gxuxcctx.html