0

单击链接时,我试图强制下载pdf文件。对于某些链接,它有效。但其他 pdf 链接,它只是在浏览器中显示 pdf。如果您能提供帮助,我将不胜感激!谢谢

4

1 回答 1

0

第一种方式

它是从 URL 管理的。我认为。你可以检查这个链接。因为该下载 URL 包含一些基于该浏览器执行操作的标头。

在浏览器中显示文件:

Content-Type: application/pdf
Content-Disposition: inline; filename="filename.pdf"

在浏览器中下载文件

Content-Type: application/pdf Content-Disposition: attachment;
filename="filename.pdf"

所以基本上你需要在 URL 中管理它。

第二种方式 ,您也可以直接从 URL 下载文件

网络下载选项

import 'dart:html' as html;
void downloadFile(String url) {
   html.AnchorElement anchorElement =  new html.AnchorElement(href: url);
   anchorElement.download = url;
   anchorElement.click();
}

如果您想在没有外部库的情况下从 URL 下载和保存文件。移动平台

Future<String> downloadFile(String url, String fileName, String dir) async {
     HttpClient httpClient = new HttpClient();
     File file;
     String filePath = '';
     String myUrl = '';
            
   try {
          myUrl = url+'/'+fileName;
          var request = await httpClient.getUrl(Uri.parse(myUrl));
          var response = await request.close();
         if(response.statusCode == 200) {
                    var bytes = await consolidateHttpClientResponseBytes(response);
                    filePath = '$dir/$fileName';
                    file = File(filePath);
                    await file.writeAsBytes(bytes);
              } else
                    filePath = 'Error code:'+response.statusCode.toString();
            } catch(ex){
                  filePath = 'Can not fetch url';
      }
            
       return filePath;
}
于 2022-01-23T07:28:20.697 回答