File - 浏览器文件下载的两种方式

通过流进行下载(弊端:不可关闭连接或跳转页面)

public void saveBatchDownloadFile(String taskNumber, HttpServletResponse response){
       
        BufferedInputStream bufferStream = null;
        
        ServletOutputStream outputStream = null;
        
        File file = new File(taskNumber + ".zip");
        
        try {
        
            FileInputStream fileInputStream = new FileInputStream(file);
            
            outputStream = response.getOutputStream();
            
            bufferStream = new BufferedInputStream(fileInputStream, 1024 * 10);
            
            int read = 0;
            
            byte[] buf = new byte[1024 * 10];
            
            while((read = bufferStream.read(buf, 0, 1024 * 10)) != -1){
            
                outputStream.write(buf, 0, read);
                
            }
            
        } catch (Exception e) {
        
            log.error("文件下载异常信息:{}", e);
            
        }finally {
        
            try {
            
                outputStream.flush();
                
                outputStream.close();
                
                bufferStream.close();
                
            } catch (IOException e) {
            
                e.printStackTrace();
                
            }
            
        }
        
        file.delete();
        
    }

}

浏览器强制下载(优点:可关闭链接或跳转页面,将下载任务交给浏览器)

public void saveBatchDownloadFile(String taskNumber, HttpServletResponse response){
       
        BufferedInputStream bufferStream = null;
        
        ServletOutputStream outputStream = null;
        
        File file = new File(taskNumber + ".zip");
        
        try {
        
            response.reset();
            
            String currentDate = DateUtil.getCurrentDateYMD();
            
            response.setCharacterEncoding("utf-8");
            
            response.setContentType("multipart/form-data");
            
            response.setContentLengthLong(file.length());
            
            // 使浏览器下载
            
            String name = currentDate +"-协议文件.zip";
            
            String fileName = new String(name.getBytes("utf-8"),"ISO-8859-1");
            
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            
            FileInputStream fileInputStream = new FileInputStream(file);
            
            outputStream = response.getOutputStream();
            
            bufferStream = new BufferedInputStream(fileInputStream);
            
            int read = 0;
            
            byte[] buf = new byte[100];
            
            while((read = bufferStream.read(buf)) != -1){
            
                outputStream.write(buf, 0, read);
                
            }
            
        } catch (Exception e) {
        
            log.error("文件下载异常信息:{}", e);
            
            return;
            
        }finally {
        
            try {
            
                bufferStream.close();
                
            } catch (IOException e) {
            
                e.printStackTrace();
                
            }
            
        }
        
        file.delete();
        
    }
    
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件管理器为Chrome,打开文件和文件夹在本地目录或网络共享。 Local Explorer提供了功能强大的增强型文件管理器,可以让您直接在Web浏览器中进行操作,从而替换您需要的浏览文件。单击本地文件夹时,本地资源管理器将打开Windows资源管理器;单击文件时,本地资源管理器将打开关联的应用程序。例如,单击* .doc文件打开MS Word,单击* .avi文件打开Windows Media Player,依此类推... Local Explorer可以打开本地硬盘驱动器,网络共享,映射的远程目录上的文件和文件夹。或Active Directory环境。您计算机上最常用的两个应用程序是文件浏览器和Web浏览器。如果他们两个都在一个地方不是很好吗?示例C:\ Users \ my_user_name \ Documents(“我的文档”文件夹)\\ 10.0.0.1 \ shared \ local \ folders \ files(网络驱动器)W:\ folder \和W:\ folder \ file.doc(在网页上)它们是“ file:/// W:/ folder /”和“ file:/// W:/folder/file.doc”)注意! -很久以前,我们就为内部系统构建了这个程序,现在我们发布它并且它是免费的。如果发现问题,请在发布负面评论之前通过[email protected]与我们联系,或通过右侧的“发送反馈”按钮与我们联系。我们对此表示赞赏。它也可以帮助其他人 -我们尚不支持Unicode。如果路径或文件名包含Unicode字符,则扩展名将不起作用 -目前仅适用于Windows,如果我们收到大量请求,我们将构建Mac OSX和Linux版本 -对于抱怨抗病毒警告的人们来说,这是错误的积极态度。我们重建了集成模块,请参阅以下http://goo.gl/qDNGP7-集成模块的静默安装命令行:LocalExplorer-Setup.exe / S ================ ===== ---如何设置---出于安全原因,Google制定了一项政策,不允许网页读写硬盘上的本地资源。因此,我们需要使用外部过程在Chrome扩展程序和文件系统(Windows资源管理器,Mac OSX Finder)之间进行集成。要同时安装这两种软件,只需按照以下简单步骤操作即可。安装本地浏览器-将扩展程序添加到网上商店的Chrome / Firefox / Safari或使用以下链接:http://www.vnprodev.com/browser-extensions/local-explorer-install.php-在Windows上,请下载并安装此扩展程序适用于Windows资源管理器集成的应用程序http://goo.gl/trX9bB,只需运行一次“ LocalExplorer-Setup.exe”,即可开始使用。集成模块的静默安装命令行:LocalExplorer-Setup.exe / S-在“设置”页面中设置默认文件夹 ================= ---更改日志---版本1.4.13:+修复了一些损坏页面的错误(ebay,...)+添加了对Windows 10的支持版本1.4.0:+添加设置页面+添加扩展按钮,单击以打开默认文件夹版本1.3:+完全重建集成模块+没有更多的AV错误肯定+添加了对Windows 8版本1.2的支持:+ URL中特殊字符的错误修复(转义/转义)版本1.1:+单击打开的Web链接+ Windows资源管理器集成=======================-关于作者---由VNProDev团队开发。我们开发了浏览器插件,插件和扩展程序,只是为了娱乐并在我们的空闲时间帮助其他人。如果您有问题或功能要求,请随时在此处给我们留言或发送电子邮件至[email protected]欢迎您! =================== ---使用条款---我们的浏览器扩展服务收集并存储有关特定网页的匿名信息,调试有关扩展如何工作的信息这些网页。该扩展程序收集的信息完全是匿名的,无法个人识别。我们使用这些信息来改善扩展程序的工作流程并修复错误。我们不会将其用于任何商业目的,也不会将其出售给任何第三方公司 VNProDev.com不需要您向我们提供信息即可使用我们的大多数服务。因此,您始终可以选择不提供此类信息。您可以使用浏览器扩展服务中的“选项”菜单来禁止浏览器扩展服务报告匿名信息。如果支持,则可以在浏览器扩展服务的“选项”菜单中进行配置。如果您选择使用我们的浏览器扩展服务,则与VNProDev.com关于隐私的任何纠纷均受本通知和我们的使用条款的约束,包括损害赔偿的限制,纠
移动端打开默认浏览器下载文件的方法有多种,以下是一种常见的实现方式: 1. 首先,你需要在移动端的网页中添加一个下载链接或按钮,用户点击该链接或按钮后会触发下载操作。 2. 在链接或按钮的点击事件中,可以使用 JavaScript 来处理下载操作。你可以使用以下代码示例来实现: ```javascript function downloadFile(url, filename) { // 创建一个隐藏的 <a> 元素 var link = document.createElement('a'); link.style.display = 'none'; link.href = url; link.download = filename; // 将 <a> 元素添加到 DOM 中 document.body.appendChild(link); // 触发点击事件进行下载 link.click(); // 移除 <a> 元素 document.body.removeChild(link); } // 在点击事件中调用 downloadFile() 函数来下载文件 var downloadButton = document.getElementById('download-button'); downloadButton.addEventListener('click', function() { var fileUrl = 'http://example.com/path/to/file'; // 文件的 URL var fileName = 'example-file.pdf'; // 文件名 downloadFile(fileUrl, fileName); }); ``` 在上述代码中,`downloadFile()` 函数接受两个参数:文件的 URL 和文件名。它创建一个隐藏的 `<a>` 元素,设置其 `href` 属性为文件的 URL,`download` 属性为文件名,然后将该元素添加到 DOM 中。接着,它通过模拟点击 `<a>` 元素来触发下载操作。最后,下载完成后,将 `<a>` 元素从 DOM 中移除。 请注意,上述代码中的 `fileUrl` 和 `fileName` 需要根据实际情况进行替换。 这样,当用户点击下载链接或按钮时,浏览器会自动下载文件,并保存到设备的默认下载目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值