image - 无法从用 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 中下载此图像?
解决方案
推荐阅读
- javascript - 对齐拆分底座 64 部分
- raspberry-pi3 - Dongle K5150 和 IoT Core 的问题
- python - 如何从列表中的多个项目中拆分路径和文件名
- liferay - eclipse中是否有适用于Liferay 7.2 GA1 CE版的插件SDK
- javascript - 使用比较运算符检查数组的内容,涉及指定的顺序
- java - Okhttp: java.net.UnknownHostException
- java - 无法使用 API 29 android studio 在模拟器中运行应用程序
- mysql - 如何使用mysql、rxjs、angular/electron连接mysql服务器
- android - 使用 InputStream 进行 Moshi 解析
- r - 拆分字符串以提取日期和时间