【问题标题】:Flutter Web download file from url instead of opening itFlutter Web 从 url 下载文件而不是打开它
【发布时间】:2020-12-23 21:49:07
【问题描述】:

有没有办法让.pdf之类的文件直接下载到用户的设备上,而不是在浏览器中打开这个pdf文件? 此代码适用于下载不支持浏览器的文件,但它会在浏览器中打开 pdf、mp3 等。

final anchor = AnchorElement(
    href: pickedFile)
  ..setAttribute("download", fileName)
    ..click();

【问题讨论】:

    标签: flutter web download progressive-web-apps


    【解决方案1】:

    如果有人仍在寻找解决方案。这就是我所做的。

    如果有download属性,Anchor标签会直接下载文件。

    注意:下载属性仅支持同源请求

    因此,不要将外部 URL 链接分配给锚元素。从 PDF 数据创建 Blob 对象并从中创建对象 URL。

     var url = Url.createObjectUrlFromBlob(Blob([data]));
          AnchorElement(href: url)
            ..setAttribute('download', '<downloaded_file_name.pdf>')
            ..click();
    

    我使用 Firebase 来存储文件,所以这里是完整的代码。

    FirebaseStorage.instance.ref(resumeFileName).getData().then(
        (data) {
          var url = Url.createObjectUrlFromBlob(Blob([data]));
          AnchorElement(href: url)
            ..setAttribute('download', '<downloaded_file_name.pdf>')
            ..click();
        }
      );
    

    【讨论】:

      【解决方案2】:

      使用Dio库。

      dependencies:
        dio: ^3.0.10
      

      下载文件

      response = await dio.download("https://www.google.com/", "./xx.html");
      

      这个video 会帮助你。

      【讨论】:

      • 你不明白这个问题。这是关于 Flutter Web 的
      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多