精华内容
下载资源
问答
  • 解决Safari浏览器下载文件文件名称乱码的问题

    解决Safari浏览器下载文件文件名称乱码的问题

    参考文章:

    (1)解决Safari浏览器下载文件文件名称乱码的问题

    (2)https://www.cnblogs.com/itsharehome/p/12293945.html


    备忘一下。


    展开全文
  • 手机浏览器和pc浏览器下载文件方法

    千次阅读 2019-12-07 16:27:13
    一:其实pc端和手机端浏览器下载文件是一样的,以流的方式传输,只需要后端设置好response的参数信息即可。上代码。 public void downLoad(HttpServletRequest request, HttpServletResponse response){ try { /...

    一:其实pc端和手机端浏览器下载文件是一样的,以流的方式传输,只需要后端设置好response的参数信息即可。上代码。

    public void downLoad(HttpServletRequest request, HttpServletResponse response){
            try {
                // 设置响应头和客户端保存文件名
                response.setCharacterEncoding("utf-8");
                //设置文件流下载方式
                response.setContentType("application/octet-stream");
                if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {
                    fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
                } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
                    fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器
                }else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {
                    fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
                }
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
                // 读取目标文件,通过response将目标文件写到客户端
                // 读取文件
                String url=path;
                System.out.println(url);
                InputStream in = new FileInputStream(url);
                OutputStream out = response.getOutputStream();
                // 写文件
                int b;
                while ((b = in.read()) != -1) {
                    out.write(b);
                }
                in.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    ps:

    首先设置设置响应方式为流:

    response.setContentType("application/octet-stream");

    其次设置不同浏览器的编码格式

    这样在浏览器中请求对应地址即可自动下载文件。

    展开全文
  • 由于项目需求,需要支持浏览器下载文件,比如招聘网站的在线简历下载。浏览器下载代码如下:public static void downloadFile(File file, HttpServletResponse response) { InputStream fin = null; ...

    场景描述:
    由于项目需求,需要支持浏览器下载文件,比如招聘网站的在线简历下载。

    浏览器下载代码如下:

    public static void downloadFile(File file, HttpServletResponse response) {
            InputStream fin = null;
            ServletOutputStream out = null;
            try {
                  fin = new FileInputStream(file);
                  out = response.getOutputStream;
                  response.setCharacterEncoding("utf-8");
                  response.setContentType("application/x-download");
                  response.addHeader("Content-Disposition", "attachment;filename=resume.doc");
    
                  byte[] buffer = new byte[1024];
                  int bytesToRead = -1;
                  // 通过循环将读入的Word文件的内容输出到浏览器中
                  while((bytesToRead = fin.read(buffer)) != -1) {
                       out.write(buffer, 0, bytesToRead);
                   }
               } catch (Exception e) {
                  e.printStackTrace();
               } finally {
                  if(fin != null) fin.close();
                  if(out != null) out.close();
    
            }
        }

    如果文件名为中文,上面的代码下载的文件名会乱码。

    解决中文乱码方法:
    拿到浏览器请求的usreAgent,判断是否包含MSIE,是则直接讲文件名转换为bytes,否则使用UTF-8转换。
    然后将bytes使用ISO-8859-1编码转换为字符串,返回到浏览器。

    代码如下:

    public class DownloadServlet extends HttpServlet {  
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
            // codes..  
            String name = "中文名 带空格 的测试文件.txt";  
            String userAgent = request.getHeader("User-Agent"); 
            // name.getBytes("UTF-8")处理safari的乱码问题 
            byte[] bytes = userAgent.contains("MSIE") ? name.getBytes() : name.getBytes("UTF-8");                     
            // 各浏览器基本都支持ISO编码
            name = new String(bytes, "ISO-8859-1");  
            // 文件名外的双引号处理firefox的空格截断问题 
            response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", name));   
            // codes..  
        }  
    }

    附个人封装的工具类:

    import javax.servlet.http.HttpServletRequest;
    import java.io.UnsupportedEncodingException;
    
    public class BrowerEncodeingSwitch {
        /**
         * 根据不同浏览器 User-Agent,生成不同的 Content_disposition
         * @param fileName
         * @param request
         * @return
         * @throws UnsupportedEncodingException
         */
        public static String getContentDisposition(String fileName, HttpServletRequest request) throws UnsupportedEncodingException {
            String content_disposition = "";
            String userAgent = request.getHeader("User-Agent");
            if (userAgent.contains("Safari")) {
                // name.getBytes("UTF-8")处理safari的乱码问题
                byte[] bytes = fileName.getBytes("UTF-8");
                // 各浏览器基本都支持ISO编码
                fileName = new String(bytes, "ISO-8859-1");
                // 文件名外的双引号处理firefox的空格截断问题
                content_disposition = String.format("attachment; filename=\"%s\"", fileName);
            } else {
                fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
                content_disposition = "attachment;filename=" + fileName;
            }
            return content_disposition;
        }
    }
    展开全文
  • SpringBoot实现利用浏览器下载文件

    千次阅读 2020-05-26 13:54:37
    SpringBoot实现利用浏览器下载文件 @RestController @RequestMapping("file") @Api(tags = "下载文件") public class downloadFile { @GetMapping("/downloadFile") public String sendXML(String path) { return...

    SpringBoot实现利用浏览器下载文件

    @RestController
    @RequestMapping("file")
    @Api(tags = "下载文件")
    public class downloadFile {
    	@GetMapping("/downloadFile")
        public ResponseEntity<FileSystemResource> downloadFile(String path) {
            return export(new File(path));
        }
    
        public ResponseEntity<FileSystemResource> export(File file) {
            if (file == null) {
                return null;
            }
            HttpHeaders headers = new HttpHeaders();
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Content-Disposition", "attachment; filename=" + file.getName());
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            headers.add("Last-Modified", new Date().toString());
            headers.add("ETag", String.valueOf(System.currentTimeMillis()));
            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .contentLength(file.length())
                    .contentType(MediaType.parseMediaType("application/octet-stream"))
                    .body(new FileSystemResource(file));
        }
    }
    

    前端传入路径,就可以直接下载到浏览器了。

    展开全文
  • 方法1可以直接调用浏览器下载文件(浏览器会直接完成下载,不会确认操作) window.location = url; 方法2通过打开新窗口下载文件(有些浏览器会阻止弹窗,导致无法下载) window.open(url); ...
  • 最近遇到用360浏览器下载文件,瞬间完成。但试图打开文件却打不开。用另一台电脑下载同样地址文件,发现文件大小不一样。怀疑是系统环境出了问题。打开360卫士,找到【断网急救箱】执行【全面诊断】发现 【浏览器...
  • Firefox 火狐 浏览器下载文件文件名中文乱码解决
  • 之前有写过"Microsoft Edge浏览器下载文件乱码修复方法",发现很多情况下下载文件乱码问题还是存在,这里对之前内容做简单补充,希望可以帮到大家。 方法二: 默认如果提示下载乱码,我们也可以在Edge浏览器里选择...
  • OpenWRT 路由器实现浏览器下载文件到计算机在从路由器中下载文件时要用到此功能,比如说要备份路由器中的配置文件,下载路由器中的日志到本地等等都需要使用到该方法要下载路由器中的文件到本地,最好的方法是在...
  • PHP 浏览器下载文件

    千次阅读 2018-05-22 18:08:16
    function export_text() { $xlsName_1 = '123.txt'; //文件名 $xlsName_2 = 'uploads/files/excel/'; //相对路径存放 $xlsName = $xlsName_2 .... if (file_exists($xlsName_2)) { //存在文件清...
  • 解决Edge浏览器下载文件乱码

    万次阅读 2018-07-21 15:54:09
    用到的技术栈是Ext,通过访问后台给接口加字符串拼接下载文件,发现Edge浏览器的文件名乱码,如: 出现该情况是因为浏览器在访问链接的时候将我们的字段自动转码了,解决办法奉上: URL = 'fileDownloadList?'+...
  • 今天遇到一个从web下载文件时,发下下载的文件大小不对的问题。文件是二进制文件 .dat文件。使用浏览器下载后,下载的大小发生了变化。使用下载工具,wget 迅雷等,大小正常。 原因: 当web服务器想浏览器发送文档...
  • 前端实现浏览器下载文件

    千次阅读 2018-09-05 15:22:56
    在前端页面,有时候需要通过链接下载文件,一般直接通过a链接就可以,href设置成文件的路径,但是又的文件,如PDF、JPG等浏览器支持的文件,通过a链接会直接打开。为此查找到下面的方法:    在html5中a链接新增...
  • PHP 调用浏览器下载文件

    千次阅读 2018-06-26 15:04:50
    原文地址:... 方法一 a标签H5属性download属性,该方法不能不兼容ie浏览器 &amp;amp;...下载test.txt文件&amp;amp;lt;/a&amp;amp;gt; 方法二 PHP直接输出...
  • Java浏览器下载文件

    千次阅读 2018-05-23 10:46:48
    * @param filePath //文件完整路径(包括文件名和扩展名) * @param fileName //下载后看到的文件名 * @return 文件名 */ public static void fileDownload(final HttpServletResponse response, String fileP...
  • 浏览器下载文件http头部

    千次阅读 2018-07-25 16:43:53
    网站提供下载服务时经常需要实现一个强制下载功能(即强制弹出下载对话框),并且文件名保持和用户之前上传时相同。 效果如下图:  Content-Disposition 使用 HTTP Header 的 Content-Disposition: attachment ...
  • 随着Windows10的普及,Microsoft Edge自带浏览器使用频率逐渐提升,在日常使用过程中我们会发现一个常规的问题是使用Edge进行日常文件下载的时候,N多情况下可能都是乱码,同样的下载链接在Chrome\Firefox\IE等等都...
  • JAVA使用浏览器下载文件接口

    千次阅读 2018-10-16 14:05:00
    前端页面调用后台接口,使用浏览器默认下载的方法。 public ResponseEntity&lt;byte[]&gt; test() throws Exception { String Path = "";//要下载文件路径 File file = new File(Path); ...
  • Java Web实现使用浏览器下载文件代码

    万次阅读 2016-03-17 09:48:38
    Java Web项目中经常要用到的文件下载功能。 从前端到后台实现为jsp+java 后台实现思路 1 得到文件在服务器上存储的绝对路径 2 将文件读入文件流 3 判断浏览器代理并设置不同的编码格式 4 设置响应头 5 循环...
  • 最近使用chrome浏览器下载较大的文件时,下载过程中总是下载一部分后又重新下载,而且一直重连下载。 搜索解决方案 比如: 下载文件过程中遇见下载一半重新下载,而且一直重连下载 说是因为因为服务器的默认下载时长...
  • 文件名中含有中文的文件下载,用谷歌、火狐、搜狗等浏览器都可以正常下载,但使用Windows自带的edge浏览器下载时文件名出现乱码问题。如下: 解决方案: 在输出头中的文件名进行urlencode编码处理。例如: ...
  • JavaWeb项目,实现在浏览器下载服务器端的文件。当文件名包含中文时,浏览器下载下来的文件名称乱码或不显示(只有后缀名) 流程分析: 浏览器 -->服务器 -->浏览器 1.浏览器端点击要下载的文件(包含中文...
  • 简单实现从浏览器下载文件

    千次阅读 2018-12-07 12:18:00
    注册跳转到下载页面代码实现 package vipdownload; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; ...
  • 用QWebEngineView开发个浏览器,通过点击下载按钮如何弹出保存路径并下载文件,例如https://www.baidu.com/baidu?wd=QQ&tn=monline_4_dg&ie=utf-8 下载QQ 代码: ``` # -*- coding: utf-8 -*- from PyQt5.Qt...
  • 有一个需求,我想要判断浏览器谷歌浏览器下载文件是否完成,java能不能对此作出判断啊?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 677,169
精华内容 270,867
关键字:

浏览器下载文件