zoukankan      html  css  js  c++  java
  • 170817关于文件下载的知识点

    2.文件的下载
     [1] 简介
      > 将服务器中的文件下载到本地。
      > 一般情况下资源所在的链接发送给浏览器,浏览器就会自动下载。
       但是当浏览器支持当前文件的格式,浏览器会自动打开文件,而不会弹出下载窗口。
      > 直接将资源放在项目的目录下,浏览器可以直接访问到资源。
       所以一般我们下载的资源不能让浏览器直接访问到。
     
     [2] 下载所需要的内容
       1.获取到文件的流
       2.设置两个响应头
     
     [3] 下载相关的两个响应头
      1) 文件类型 Content-Type --> 文件的MIME类型
       Content-Type:告诉浏览器文件的类型,需要设置一个MIME值
       response.setContent-Type("MIME值")
       通过servletContext.getMimeType(path)方法可以直接获取文件的MIME类型
       
      2) 下载文件的信息 Content-Disposition --> attachment; filename=文件名
       Content-Disposition告诉浏览器如何处理文件,
       attachment 告诉浏览器这个文件是一个附件的形式发给你的,需要你做下载的操作
       filename 告诉浏览器下载文件的名字
       
      3) 乱码的问题,当将文件的名字设置为中文,浏览器正常显示文件的名字。
       因为从服务器向浏览器发送中文时,需要对内容进行URL编码。
       > 大部分浏览器使用如下方式即可解决乱码问题:URLEncoder.encode(fileName, "utf-8");
       > 但是火狐默认以Base64来解码的,所以要为火狐单独处理。
       
       > 可以使用如下代码来判断浏览器的类型,然后进行不同的编码处理
        //判断当前浏览器是否为火狐
        if(ua.contains("Firefox")){
         //是火狐浏览器,使用BASE64编码
         fileName = "=?utf-8?b?"+new BASE64Encoder().encode(fileName.getBytes("utf-8"))+"?=";
        }else{
         //给文件名进行URL编码
         //URLEncoder.encode()需要两个参数,第一个参数时要编码的字符串,第二个是编码所采用的字符集
         fileName = URLEncoder.encode(fileName, "utf-8");
        }
        
       >  还有一种不太讲理的方式,谁问跟谁急。反正好使
        - 向将字符串用gbk进行解码,然后在使用iso8859-1进行编码
        fileName = new String(fileName.getBytes("gbk"),"iso8859-1");
      

  • 相关阅读:
    每天一个linux命令(57):ss命令
    [原][osg][osgearth]我眼中的osgearth
    [osg]osgDB的加载机制,使用3DS插件做参考(转,整理现有osgDB资料)
    [原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
    [原][译][osgearth]Model Source Drivers模型驱动源(OE官方文档翻译)
    [原][译][osgearth]样式表style中参数总结(OE官方文档翻译)
    [原][osgearth]API加载earth文件的解析
    [原][译][osgearth]API加载地球(OE官方文档翻译)
    [osgearth]Earth文件详解
    [osgearth]通过API创建一个earth模型
  • 原文地址:https://www.cnblogs.com/12344321hh/p/7390666.html
Copyright © 2011-2022 走看看