首页 > 解决方案 > 无法从用 Flutter 编写的 Web 应用程序下载图像

问题描述

下面是我用来从用 Flutter 编写的 Web 应用程序下载图像的代码:

Future<void> downloadImage() async {
    String imageUrl = 'https://images.pexels.com/photos/208745/pexels-photo-208745.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940';
    try {
      http.Response response = await http.get(
        Uri.parse(imageUrl),
      );
      final data = response.bodyBytes;
      final base64data = base64Encode(data);
      final a = html.AnchorElement(href: 'data:image/jpeg;base64,$base64data');
      a.download = 'download.jpg';
      a.click();
      a.remove();
    } catch (e) {
      print(e);
    }
  }

这很有效,但是如果我通过以下方式更改 URL:

String imageUrl = 'https://storage.googleapis.com/ap_fields/62/2021/images/5/Narrow/Thumb/21_08_18_12_58_46.jpg?Expires=1642251597&GoogleAccessId=batman%40vibrant-mantis-192314.iam.gserviceaccount.com&Signature=IeVkVJrPFO1%2BO5Up3Y90cxa3LXKgzZvo0JEOFB88gkDARbXOLks7Di8zqU7cp3OZmanE3ksipHCVH8W00gn4JwylZ8PyvBXoLjM0cZrfFKTkZgyxcQU%2Fe%2BkHZglBvKLae0RkVTMZ0NXG9UjS0dR7K7z1ONI73wdqWq9M3gJCxwIcBe6AK%2B7lJQfsIkYOXDuvTyqx9jGmZcM%2BdpzV6b%2F%2FEwP12GlnAQt%2F2qWwLbZVMtkwnjXyoa4VWyZFakjbqr4sgmKL3%2Fz11uz3oMIEfi6CXa%2Fx%2FwyIX3izkmpZdooNAZG0Bt78%2FJumG%2Bwe0lvwcsEl8Jl0XF5BCxKj46mrjTay0g%3D%3D';

在 try 闭包内的第一行立即发送异常。错误类型为:“XMLHttpRequest 错误”,详细信息如下:

Error: XMLHttpRequest error.
    dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 909:28                get current
packages/http/src/browser_client.dart 71:22                                       <fn>
dart-sdk/lib/async/zone.dart 1613:54                                              runUnary
dart-sdk/lib/async/future_impl.dart 155:18                                        handleValue
dart-sdk/lib/async/future_impl.dart 707:44                                        handleValueCallback
dart-sdk/lib/async/future_impl.dart 736:13                                        _propagateToListeners
dart-sdk/lib/async/future_impl.dart 533:7                                         [_complete]
dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
dart-sdk/lib/async/stream.dart 1219:7                                             <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37307:58                              <fn>

而当我直接在浏览器中打开这个Url时,我看到了图像并且可以很容易地下载它。如何在 Flutter 中下载此图像?

标签: imageflutterdownloadflutter-web

解决方案


推荐阅读