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("获取签名信息失败");
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容