精华内容
下载资源
问答
  • Java浏览器下载文件

    千次阅读 2018-05-23 10:46:48
    * @param filePath //文件完整路径(包括文件名和扩展名) * @param fileName //下载后看到的文件名 * @return 文件名 */ public static void fileDownload(final HttpServletResponse response, String fileP...
    /**
     * @param response 
     * @param filePath    //文件完整路径(包括文件名和扩展名)
     * @param fileName    //下载后看到的文件名
     * @return  文件名
     */
    public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{  
            
           byte[] data = FileUtil.toByteArray2(filePath);  
           fileName = URLEncoder.encode(fileName, "UTF-8");  
           response.reset();  
           response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");  
           response.addHeader("Content-Length", "" + data.length);  
           response.setContentType("application/octet-stream;charset=UTF-8");  
           OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());  
           outputStream.write(data);  
           outputStream.flush();  
           outputStream.close();
           response.flushBuffer();
           
       } 
    展开全文
  • 由于项目需求,需要支持浏览器下载文件,比如招聘网站的在线简历下载浏览器下载代码如下: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;
        }
    }
    展开全文
  • java 返回浏览器下载文件

    千次阅读 2019-07-11 15:56:35
    //其他浏览器 } response.setCharacterEncoding("UTF-8"); response.setContentType("application/force-download");// 设置强制下载不打开 response.addHeader("Content-Disposition", "attachment;fileName=" ...
    @RequestMapping("downloadFile")
        public String downloadFile(HttpServletRequest request,
                                   HttpServletResponse response,String fileName){
            if(StringUtils.isNotBlank(fileName)){
                String zipFileName = fileName+".zip";
                File file = new File(rootPath+zipFileName);
                if(file.exists()){
                    byte[] buffer = new byte[1024];
                    FileInputStream fis = null;
                    BufferedInputStream bis = null;
                    OutputStream os = null;
                    String finalFileName = "";
                    try {
                        final String userAgent = request.getHeader("USER-AGENT");
                        if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){//IE浏览器
                            finalFileName = URLEncoder.encode(zipFileName,"UTF8");
                        }else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
                            finalFileName = new String(zipFileName.getBytes(), "ISO8859-1");
                        }else{
                            finalFileName = URLEncoder.encode(zipFileName,"UTF8");//其他浏览器
                        }
                        response.setCharacterEncoding("UTF-8");
                        response.setContentType("application/force-download");// 设置强制下载不打开
                        response.addHeader("Content-Disposition", "attachment;fileName=" + finalFileName);// 设置文件名
                        fis = new FileInputStream(file);
                        bis = new BufferedInputStream(fis);
                        os = response.getOutputStream();
                        int i = bis.read(buffer);
                        while (i != -1) {
                            os.write(buffer, 0, i);
                            i = bis.read(buffer);
                        }
                        return "下载成功";
                    }catch (Exception e){
    
                    }finally {
    
                        if(fis != null){
                            try {
                                fis.close();
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                        if(bis != null){
                            try {
                                bis.close();
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                        if(os != null){
                            try {
                                os.flush();
                                os.close();
                            }catch (Exception e){
                                e.printStackTrace();
                            }
                        }
                    }
                }
            }
            return "下载失败";
        }

     

    展开全文
  • JAVA使用浏览器下载文件接口

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

    前端页面调用后台接口,使用浏览器默认下载的方法。

    public ResponseEntity<byte[]> test() throws Exception {
            String Path = "";//要下载的文件路径
            File file = new File(Path);
            HttpHeaders headers = new HttpHeaders();
            //要生成的文件
            String filename = new String("test.txt".getBytes("utf-8"), "iso-8859-1");//为了解决中文名称乱码问题
            headers.setContentDispositionFormData("attachment", filename);
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    
            return new ResponseEntity<byte[]>(org.apache.commons.io.FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
        }
    
    展开全文
  • 最近开始学习java浏览器文件下载,使用Springboot maven工程实现,做了比较多的尝试,也遇到了许多问题,在此记录总结一下。由于是本地局域网的测试,所以代码中的文件的源目录都是直接写死的本地目录。 方式一: @...
  • Java Web实现使用浏览器下载文件代码

    万次阅读 2016-03-17 09:48:38
    Java Web项目中经常要用到的文件下载功能。 从前端到后台实现为jsp+java 后台实现思路 1 得到文件在服务器上存储的绝对路径 2 将文件读入文件流 3 判断浏览器代理并设置不同的编码格式 4 设置响应头 5 循环...
  • @Slf4j @RestController @RequestMapping("/download") public class DownloadController { @ApiOperation("下载") @GetMapping public void download(HttpServletRequest request, HttpServletResponse response, ...
  • 1. 通过java程序输出文件 /** * 功能:压缩多个文件成一个zip文件 * @param srcfile:源文件列表 * @param zipfile:压缩后的文件 */ public static void zipFiles(File[] srcfile, File zipfile) { byte[] buf ...
  • 因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载. 废话不多说,直接上代码! 1.首先是建立一个...
  • 浏览器下载文件--Java服务端代码

    千次阅读 2017-05-26 08:58:40
    有时候我们用户需要从服务器上下载文件,核实后就要有相应的服务来支持 下面为到家谢一个简单的服务器端的小例子,需要的朋友可以参考一下 代码很简单,注释也很全 public calss Download{ public void download...
  • Java中有时生成文件之后让前端下载,获取的文件名中存在中文或者是空格的时候,下载文件名称出现乱码。这个问题困扰了我好久,用过各种的转码都无济于事。在后来终于解决了,在这里和大家分享一下,其实也就是...
  • 有一个需求,我想要判断浏览器谷歌浏览器下载文件是否完成,java能不能对此作出判断啊?
  • 浏览器文件下载:如果你想在浏览器中实现下载功能--一些原本不默认下载的文件,如:jpg、xml等。 图片显示(流形式):如果你想在浏览器中显示图片,而图片不是一个静态文件(没有url地址) 那我们应该怎么做呢? ...
  • java实现浏览器下载excel文件

    万次阅读 2017-08-08 19:45:00
    之前有写过一个简单版的excel导出(简单,就是在本地导出),今天要说的是从浏览器将数据导出为excel文件,其实也可以看做是在浏览器下载这个excel文件 在实际工作生活中,常常会有这种场景。我们需要将页面上的表格...
  • java 调用浏览器下载网络文件

    千次阅读 2018-05-21 14:41:22
    * 文件下载 * @param response * @param fileId 文件Id * @throws UnsupportedEncodingException */ @ResponseBody @RequestMapping(value = "/exportUI") public void exportUI...
  • 一、火狐浏览器下载带中文名字的文件会乱码,其他浏览器不会 1、原因:找了下资料后发现,是火狐使用了RFC 2183协议。 文件名存在http header中的filename,Content-Disposition: attachment; filename=FILENAME,...
  • 文章地址:http://www.haoplay.top/tiezi/11_1_1.html解决方案: 在代码中添加: response.setHeader("Content-Length", ""+file.length());
  • java web 下载文件 浏览器弹出下载

    万次阅读 2016-06-15 17:43:32
    前端js文件:window.open("feeWarning/excelQfAll");//访问后台springmvc中的excelQfAll方法得到下载...后台java文件: public void excelQfAll(HttpServletRequest request,HttpServletResponse response) { String f
  • java使用流实现浏览器下载docx文件

    千次阅读 2018-04-17 10:46:09
    后端代码如下:需要注意的是头的设置,需要告诉浏览器需要下载文件,以及下载文件名。在这里我下载的是一个docx文件 /** * 导出 * @param aFileName * @param aFilePath */ public void doExport(String ...
  • 首先想到的就是先生成pdf文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器下载功能即可完成批量下载的需求。 //点击批量下载按钮所触发的js片段 function getTeamReport(obj){ var temp_form = ...
  • /**前端通过浏览器下载服务器上的文件 * @param request * @param response * @param url 服务器文件地址(本地) * @return */ public Boolean downLoad(HttpServletRequest request, HttpServletResponse ...
  • 首先想到的就是先生成pdf文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器下载功能即可完成批量下载的需求。 //点击批量下载按钮所触发的js片段 function getTeamReport(obj){ var temp_form = ...
  • 1、下载单个文件 public JsonView downPrintFile(){ //要下载的文件名 从前台传来 String fileNameNeedDown = request.getParameter("fileName"); //这里的路径是要下载文件所在路径 String ...
  • 前端浏览器下载Excel看这儿XXX 通过io流向本地路径写入文件 File file = new File("D://system10002.sql"); try { if (!file.exists()) { file.createNewFile(); } FileOutputStream output = new ...
  • 通过java程序输出文件 /** * 功能:压缩多个文件成一个zip文件 * @param srcfile:源文件列表 * @param zipfile:压缩后的文件 */ public static void zipFiles(File[] srcfile, File zipfile) { byte[] buf = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 520,320
精华内容 208,128
关键字:

java浏览器下载文件

java 订阅