当前位置: 首页 > news >正文

app网站开发后台处理数据网站建设成本

app网站开发后台处理,数据网站建设成本,wordpress 安装 php,喜茶vi设计手册目录: 一、文件上传1.1 文件上传“概述”1.2 文件上传“具体配置” :“前端”中配置“文件上传” ( type“file” 满足3个条件 )“后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean 配置“文件上传”的“约束条件” 通过“MultipartFile接口”参数接… 目录: 一、文件上传1.1 文件上传“概述”1.2 文件上传“具体配置” :“前端”中配置“文件上传” ( type“file” 满足3个条件 )“后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean 配置“文件上传”的“约束条件” 通过“MultipartFile接口”参数接收“传来的文件”) 1.3 文件上传“应用案例” 文件上传 (存储在“相对路径”)文件上传 (存储在“绝对路径”) 二、文件下载2.1 实现“文件下载” ( “不可”下载“非中文名称”文件 )2.2 “中文名称”的文件下载 ( “可”下载“中文名称”文件 ) 作者简介 一只大皮卡丘计算机专业学生正在努力学习、努力敲代码中! 让我们一起继续努力学习 该文章参考学习教材为 《Java EE企业级应用开发教程 (Spring Spring MVC MyBatis)》 黑马程序员 / 编著 文章以课本知识点 代码为主线结合自己看书学习过程中的理解和感悟 最终成就了该文章 文章用于本人学习使用 同时希望能帮助大家。 欢迎大家点赞 收藏⭐ 关注哦 侵权可联系我进行删除如果雷同纯属巧合 ​ 一、文件上传 1.1 文件上传“概述” 上文件的上传和下载 是 项目 开发中 最常用的功能例如图片的上传与下载、邮件附件的上传与下载等。 1.2 文件上传“具体配置” : “前端”中配置“文件上传” ( type“file” 满足3个条件 ) 多数文件上传 都是通过 表单形式 提交给 后台服务器 的因此要实现文件上传功能就需要提供一个 文件上传的表单而 该表单 必须 满足以下3个条件 : ① form表单的method属性设置为post ② form表单的enctype属性 (编码方式) 设置为 multipart/form-data (多部分/表单数据) ③ 提供 input type”file” namefilename multiple“multiple”/ 的 文件上传输入框。 ps multiple“multiple” 为可选属性表示 可以 一次性选择多个文件来上传 。 文件上传 表单的 示范代码 如下 (“前端”中配置“文件上传”) %-- 通过表单的方式进行文件上传--% form action/uploadUrl methodpost enctypemultipart/form-data %-- multiplemultiple 为可选属性表示一次可以选择多个文件上传 --%input typefile namefilename multiplemultiple /form上述代码中除了满足上传表单必须的3个条件外在 input元素中还增加了一个 multiple属性该属性是HTML5的新属性如果使用了该属性则可以同时选择多个文件进行上传即 “多文件上传”。 当客户端form表单的 enctype属性 (multipart/form-data)为 multipart/form-data 时浏览器 就会采用 二进制流 的方式来 处理表单数据服务器端 就会对 文件上传的请求进行解析处理。 “后端”中配置“文件上传” ( 配置id为“CommonsMultipartResolver”的bean 配置“文件上传”的“约束条件” 通过“MultipartFile接口”参数接收“传来的文件”) Spring MVC中为文件上传提供了直接的支持这种支持是通过 MultipartResolver (多部件解析器) 对象实现的。MultipartResolver ( 多部件解析器 )是一个接口对象需要通过它的 实现类 : CommonsMultipartResolver 来完成 文件上传工作。在Spring MVC中使用 MultipartResolver对象非常简单只需要在配置文件中定义MultipartResolver接口 的 Bean 即可。 (配置 id 为 “CommonsMultipartResolver”的bean ) 除了配置 CommonsMultipartResolver类之外还可以通过 property元素配置“文件上传”的“约束条件” 具体 “文件上传”的“约束条件” 如下 约束条件描述property name“defaultEncoding” value“xxx”/配置 “请求编码格式”必须 与JSP中的 pageEncoding 的 属性一致默认是 ISO-8859-1。property name“maxUploadSize” value“xxx”/设置 上传文件 的 最大长度单位 为 “字节”。property namemaxInMemorySize value“xxx”/设置 “缓存中” 的 最大尺寸。ps :maxInMemorySize 最大内存大小。property name“resolveLazily” value“xxx”/推迟文件解析以便在 Controller 中 捕获文件大小异常。 例子如 : ( springmvc-config.xml 中配置 “文件上传” ) ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!-- 配置Springmvc的“文件上传” -- !-- 配置id为CommonsMultipartResolver的bean -- !-- 因为实现类CommonsMultipartResolver的内部是引用multipartResolver的知识点来获取“该实现类对象”并完成“文件解析”的所以该bean的id名必须为: multipartResolver -- bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver !-- 配置“请求编码格式”,必须与JSP中的pageEncoding的属性一致默认是ISO-8859-1 -- property namedefaultEncoding valueUTF-8/ !-- 设置上传文件的最大长度单位为字节 -- !-- 1MB 1024KB ,1KB 1024B ,2MB 2X1024X1024 2097152B(字节)-- property namemaxUploadSize value2097152/ /bean/beans在上述配置代码中配置了 CommonsMultipartResolver类 外还通过 property元素配置了 编码格式 和 允许上传文件的大小。 注意 : 因为MuliparResolver接口的实现类CommonsMulipartResolver内部是引用muliparReolver字符 串获取该实现类对象并完成文件解析的所以在配置CommonsMulipartResolver时必须指定该Bean的id为mulipartResolver。 由于 CommonsMultipartResolver 是SpringMVC内部通过 Apache Commons FileUpload 技术实现的所以 SpringMVC的文件上传 还 需要依赖Apache Commons FileUpload的组件即需要导入支持文件上传的相关JAR包具体如下 : commons-fileupload-1.3.2.jar commons-io-2.5.jar SpringMVC所需JAR SpringMVC中“文件上传”和“下载”所需JAR 后端处理器方法 中是通过 “MultipartFile接口”类型参数 来 接收前端传来的文件 的例子如下 package com.myh.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;Controller //将该被设置为处理器类 public class FileUploadController { //文件上传的“控制器类”RequestMapping(/fileUpload)//使用RequestParam(前端参数名)注解注解“前后端参数名不一致的问题”让数据之间能够完成映射/赋值//通过MultipartFile接口来接受前端传来的文件public String handlerFormUpload(RequestParam(filename) MultipartFile file) { //MultipartFile 是一个接口if (!file.isEmpty()) { //如果文件不为空//具体的执行方法...return uploadSuccess;}return uploadFailure;} }在上述代码中包含一个 MultipartFile接口类型 的参数file(前端)上传到程序中的文件就是被封装在该参数中 ( MultipartFile接口 )的。org.springframework. web mutipart.MultipartFile接口中提供了 获取上传文件 、文件名称等方法这些方法及其说明如下表示 : MultipartFile接口中的主要方法 : 方法说明byte[ ] getBytes( )以 字节数组 形式 返回文件 的 内容。String getContentType( )返回 文件 的 内容类型。InputStream getInputStream( )读取文件内容返回一个InputStream流。String getName( )获取 多部件form表单 的 参数名称。String getOriginalFilename( )获取 上传文件 的 初始化名。long getSize( )获取 上传文件的大小单位是字节。boolean isEmpty( )判断 上传的文件是否为空。void transferTo( File file )将 上传的文件 保存到目标目录下。ps :该 方法 中的 File参数本质 为 “上传文件”的“存储地址信息”因为 MultipartFile接口 就 代表“ 上传文件本身”。 1.3 文件上传“应用案例” 文件上传 (存储在“相对路径”) 第一步、导入依赖 SpringMVC所需JAR SpringMVC中“文件上传”和“下载”所需JAR 第二步、配置具体操作代码文件 web.xml ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!-- 配置前端过滤器--servletservlet-namedispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!-- 配置springmvc-config.xml配置文件的位置 上下文配置位置 --init-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc-config.xml/param-value/init-param!-- 配置启动服务器时加载此配置文件加载此servlet --load-on-startup1/load-on-startup/servlet!-- 配置Servlet的Mapper映射 --servlet-mappingservlet-namedispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping/web-appspringmvc-config.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:mvchttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd!-- 定义“组件扫描”指定需要扫描的包让注解生效 --mvc:component-scan base-packagecom.myh.controller/!-- 配置“视图解析器” : 对于“返回视图”的操作有便利 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolver!-- 设置前缀 --property nameprefix value/WEB-INF/jsp//!-- 设置后缀 --property namesuffix value.jsp//bean!-- 配置文件上传解析器 : 多部件解析器 : MultipleResolver --bean idmultipartResolver classorg.springframework.web.multipart.commons.CommonsMultipartResolver!-- 设置请求编码格式 --property namedefaultEncoding valueUTF-8//bean/beansFileUploadController.java package com.myh.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID;/*** 文件上传 (相对路径)*/ Controller public class FileUploadController {/*** 执行文件上传*/RequestMapping(/fileUpload)public String handldFormUpload(RequestParam(username) String username , RequestParam(file) ListMultipartFile uploadfiles,HttpServletRequest request) {//判断所上传的文件是否存在if (!uploadfiles.isEmpty() uploadfiles.size() 0) {//循环输出上传的文件for (MultipartFile multipartFile : uploadfiles) {//获得上传文件的原始名String originalFilename multipartFile.getOriginalFilename();/*** 设置上传文件的保存地址*///从HTTP请求对象中获取ServletContext对象然后使用ServletContext对象的.getRealPath()方法来获得“真实路径”。String dirPath request.getServletContext().getRealPath(/upLoadFile/); //会在out目录下的打包的项目的“根目录”下创建该文件夹用于存储文件File filePath new File(dirPath);//如果保存文件的地址不存在则先创建目录if (!filePath.exists()) {filePath.mkdirs(); //创建目录(创建文件夹)}//使用UUID重新命名上传的文件名称(上传人_uuid_原始文件名称)/*UUID.randomUUID() 是Java中的一个方法用于生成一个随机的、唯一的标识符Universally Unique Identifier简称UUID*/String newFilename username UUID.randomUUID() originalFilename;try {//使用MultipartFile接口的 transferTo()方法将文件上传到指定位置/*transferTo(File file) : 该方法中的参数本质上为“上传文件”的存储地址信息因为multipartFile接口就代表“上传文件本身”*/multipartFile.transferTo(new File(dirPath newFilename));System.out.println(new File(dirPath newFilename));} catch (IOException e) {e.printStackTrace();return error; //返回错误页面}}//跳转成功页面return success;} else {return error;}} }在上述代码中使用注解方式定义了一个控制器类并在类中定义了执行文件上传的方法 : handleFormUpload( )。在handleFormUpload( )方法参数中使用了ListMultipartFile集合类型 来接收用户上传的文件然后判断所上传的文件是否存在。如果存在则继续执行上传操作在通过MultipartFile接口的transferTo( )方法将上传文件保存到 用户指定的目录位置 会跳转到success.jsp页面如果文件不存在或者上传失败则跳转到error.jsp页面。 注意点 此处 文件 存储的路径 为 “相对路径” 即 /upLoadFile/ : 如果该文件夹还没存在会先在 “项目打包后 的 根目录 创建一个 文件夹 : upLoadFile, 然后将 “上传的文件” 存储到该文件夹中) upLoadFile文件夹 (是 相对路径 ) 位置展示如下图所示 FileUpload.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle文件上传/titlescript//判断是否填写上传人并已选择上传文件function check() {var username document.getElementById(username).value;var file document.getElementById(file).value;if (username ) {alert(请填写上传人);return false;}if (file.length 0 || file ) {alert(请选择上传文件);return false;}return true;}/script /head body %--οnsubmitreturn check() : 只有check()方法的返回值为true才会正常提交表单(才会访问url) --% form action${pageContext.request.contextPath}/fileUpload enctypemultipart/form-data methodpost onsubmitreturn check()上传人:input typetext idusername nameusername/br请选择文件:input typefile idfile namefile multiplemultiple/brinput typesubmit value上传/form /body /html在文件中编写了一个用于文件上传的fom表单该表单可以填写上传人并上传文件当单击“上传” 按钮时会先执行ceck方法来检查上传 人文本框和文件选择框中内容是否为空只有填写了上传人并选择了需要上传的文件后才能正常提交表单否则表单将不会提交并给相应提示信息 οnsubmitreturn check() 只有方法中返回值为true才会提交表单。 提交表单后会以POST方式提交到一个以”/fileUpload”结尾的请求中。 error.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleerror页面/title /head body error! /body /htmlsuccess.jsp % page contentTypetext/html;charsetUTF-8 languagejava % html headtitlesuccess页面/title /head body ok! /body /html将 项目发布到Tomcat服务器中并启动在浏览器中访问地址 : http://localhost:8080/FileUpload.jsp 其显示效果如下图所示 : 在上面的 “上传页面” 中填写 上传人 并选择所要 上传的文件单击 “上传” 按钮后就可向后台发送上传请求信息。 单击 “上传”按钮程序在正确执行后浏览器 就会跳转到 success.jsp 页面此时查看 项目的发布项目 即 可发现 在 S:\2024项目\SpringMVC中的“文件上传”和“下载”\out\artifacts\SpringMVC_Web_exploded下 ( 能 在idea找到该文件夹所以 属于“相对路径”) 创建了一个名字为 upLoadFile 的 文件夹同时 “前端上传的文件” 则 存储在该文件夹 中。在IDEA中查看存储“上传文件”的upLoadFile文件夹: 注意点 需要注意的是 upLoadFile文件夹 是在项目的 发布路径 / 打包路径 中而不是创建的项目所在目录中 文件上传 (存储在“绝对路径”) 文件上传 (存储在“绝对路径”) 的 实现: 除了 FileUploadController.java 这个文件有不同之外其他的都是相同的。替换以下代码就是将“文件”存储在“绝对路径” /** * 存储的是“绝对路径”将上传的文件存储在D盘下的upLoadFile3文件夹下 */ String dirPath D:/upLoadFile3/;FileUploadController.java : package com.myh.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID;/*** 文件上传 (绝对路径)*/ Controller public class FileUploadController2 {/*** 执行文件上传( 文件存储在绝对路径)*/RequestMapping(/fileUpload3)public String handldFormUpload(RequestParam(username) String username , RequestParam(file) ListMultipartFile uploadfiles,HttpServletRequest request) {//判断所上传的文件是否存在if (!uploadfiles.isEmpty() uploadfiles.size() 0) {//循环输出上传的文件for (MultipartFile multipartFile : uploadfiles) {//获得上传文件的原始名String originalFilename multipartFile.getOriginalFilename();/*** 存储的是“绝对路径”将上传的文件存储在D盘下的upLoadFile3文件夹下*/String dirPath D:/upLoadFile3/;File filePath new File(dirPath);//如果保存文件的地址不存在则先创建目录if (!filePath.exists()) {filePath.mkdirs(); //创建目录(创建文件夹)}//使用UUID重新命名上传的文件名称(上传人_uuid_原始文件名称)/*UUID.randomUUID() 是Java中的一个方法用于生成一个随机的、唯一的标识符Universally Unique Identifier简称UUID*/String newFilename username UUID.randomUUID() originalFilename;try {//使用MultipartFile接口的 transferTo()方法将文件上传到指定位置/*transferTo(File file) : 该方法中的参数本质上为“上传文件”的存储地址信息因为multipartFile接口就代表“上传文件本身”*/multipartFile.transferTo(new File(dirPath newFilename));System.out.println(new File(dirPath newFilename));} catch (IOException e) {e.printStackTrace();return error; //返回错误页面}}//跳转成功页面return success;} else {return error;}} }二、文件下载 2.1 实现“文件下载” ( “不可”下载“非中文名称”文件 ) 文件下载 就是将 文件服务器 中的 文件下载到本机上。在SpringMVC环境中实现文件下载 大致可分为 如下两个步骤 ① 在 客户端页面 使用一个 文件下载 的 超链接该链接的 href属性 要指定后台文件下载的 方法 以及 文件名 (需要先在文件下载目录中添加了一个名称为 “1.jpg的文件 )具体代码示例如下 : a href${pageContext.request.contextPat}/download?filename1.jpg 文件下载 /a② 在后台 Controller类 中使用 SpringMVC 提供的 文件下载方法 进行 文件下载。SpringMVC提供了一个 ResponseEntity类型的对象使用它可以很方便地定义返回的 HttpHeaders对象 和 HttpStatus对象通过对这两个对象的设置即 可完成下载文件时所需的配置信息。 文件下载的示例代码 如下所示 : package com.myh.controller;import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException;/*** 文件下载 */ Controller public class FileDownLoadController {RequestMapping(/download)public ResponseEntitybyte[] fileDownload(HttpServletRequest request,String filename) throws IOException {//指定要下载的文件所在的路径 (即存储文件的路径) --此时用的是“相对路径”String path request.getServletContext().getRealPath(/upLoadFile/);//创建该对象File file new File(path File.separator filename);//设置响应头HttpHeaders headers new HttpHeaders();//通知浏览器“以下载的方式”打开文件headers.setContentDispositionFormData(attachment, filename);//定义以流的形式下载返回文件数据headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);//使用Spring MVC框架的 ResponseEntity对象封装下载数据ResponseEntitybyte[] responseEntity new ResponseEntity(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);return responseEntity;} }在 fileDownload( )方法 中首先根据 文件路径 和需要下载的 文件名 来 创建文件对象然后对 响应头 中 文件下载时的打开方式 以及 下载方式 进行了设置最后返回 ResponseEntity封装 的 下载结果对象。 ResponseEntity对象 有些 类似 前面章节介绍的 ResponseBody注解它用于 直接返回结果对象。上面示例中设置 响应头信息 中MediaType代表的是Interner Media Type (即互联网媒体类型)也叫作MIME类型, MediaType.APPLICATION_OCTET_STREAM的值为 application/octet-stream即表示以 二进制流的形式下载数据 HttpStatus 类型代表的是Http协议中的状态示例中的 HttpStatus.OK 表示 200 即服务器 已成功处理了请求。 启动服务器后访问网址 http://localhost:8080/FileDownLoad.jsp 其显示效果如下图所示 点击“文件下载”链接后会出现下载提示弹窗如下图所示 此时点击“下载”即可下载该文件。 2.2 “中文名称”的文件下载 ( “可”下载“中文名称”文件 ) 虽然在 实现“文件下载”案例 中能通过 Spring MvC实现了文件下载功能但 此案例代码 只适用于非中名称的文件进行下载当对中文名称的文件进行下载时因为各个浏览器内部转码机制的不同就会出现 不同的乱码以及解析异常问题。例如在文件下载目录中添加一个名称为“壁纸.jpg” 的文件当通过浏览器下载该文件时下载弹出窗口的显示如下图所示 : 从上图可以看出所要下载的文件名称并不是壁纸.jpg 而是“_.jpg 这就表示 中文文件名称出现了乱码。那么我们要如何解决这种乱码问题呢? 为了 解决浏览器中文件下载 时 中文名称的乱码问题可以在 ① 前端页面发送请求前 先 对中文名进行统一编码然后在 ② 后台控制器类中对文件名称进行相应的转码其 具体实现步骤如下 : ① 在 下载页面中对中文文件名编码。可以使用ServletAPI中提供的 URLEncoder类 ( URL编码器 )中的 encoder( String s, String enc )方法将中文转为UTF-8编码。该方法中 第一个参数表示 需要转码的字符串 第二个参数表示 编码格式其具体实现方式如下代码所示 FileDownLoad.jsp : % page importjava.net.URLEncoder % % page contentTypetext/html;charsetUTF-8 languagejava pageEncodingUTF-8 % html headtitle文件下载(下载中文名称文件)/title /head body %--% URLEncoder.encode(壁纸.jpg,UTF-8) % : 其作用为:通过URLEncoder(URL编码器)的,encode()方法来对“中文文件名称”进行“转码” --% a href${pageContext.request.contextPath}/download2?filename% URLEncoder.encode(壁纸.jpg,UTF-8) %“中文名称”文件下载 /a /body /html② 修改控制器类FileUploadController 中的fileDownload( )方法并 增加对文件名进行编码的方法其代码如下所示 : FileDownLoadController2.java package com.myh.controller;import org.apache.commons.io.FileUtils; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder;/*** 文件下载 (下载中文名称文件)*/ Controller public class FileDownLoadController2 {RequestMapping(/download2)public ResponseEntitybyte[] fileDownload(HttpServletRequest request,String filename) throws IOException {//指定要下载的文件所在的路径 (即存储文件的路径) --此时用的是“相对路径”String path request.getServletContext().getRealPath(/upLoadFile/);//创建该文件对象File file new File(path File.separator filename);/*** 对文件名编码防止中文文件乱码*/filename this.getFilename(request,filename);//设置响应头HttpHeaders headers new HttpHeaders();//通知浏览器“以下载的方式”打开文件headers.setContentDispositionFormData(attachment, filename);//定义以流的形式下载返回文件数据headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);//使用Spring MVC框架的 ResponseEntity对象封装下载数据ResponseEntitybyte[] responseEntity new ResponseEntity(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);return responseEntity;}/*** 根据浏览器的不同编码进行设置返回编码后的文件名*/private String getFilename(HttpServletRequest request, String filename) throws UnsupportedEncodingException {//IE不同版本User-Agent中出现的关键词String[] IEBrowserKeyWords {MSIE, Trident, Edge};//获取请求头代理信息String userAgent request.getHeader(User-Agent);for (String keyWord : IEBrowserKeyWords) {if (userAgent.contains(keyWord)) {//IE内核浏览器统一为UTF-8编码显示return URLEncoder.encode(filename, UTF-8);}}//火狐等其他浏览器统一为ISO-8859-1编码显示return new String(filename.getBytes(UTF-8), ISO-8859-1);} }在方法getFilename( )中由于IE浏览器在文件编码上与其他浏览器的方式不同所以在中文编码设置上IE浏览器设置为UTF-8编码而火狐等其他浏览器设置为ISO-8859-1编码。另外由于不同版本的IE浏览器请求代理User-Agent中的关键字也略有不同所以在判断IE浏览器时需要特别意User-Agent中的关键字。 再次进行中文名的文件下载测试如下图所示
http://www.hkea.cn/news/14282449/

相关文章:

  • 广州犀牛云网站建设贵州省水利建设管理总站网站
  • 长沙市建设厅官方网站织梦与wordpress
  • 济南网站优化技术厂家网站开发 实时更新
  • 网站 dns 解析商业信息发布平台
  • iis服务器的默认网站凡科网登录下载
  • 湖南网站托管湖南郴州市房价
  • 做爰免费网站机关单位不得建设网站
  • 如何做代刷网站内部优化
  • 北京网站建设百度排名12306网站开发过程
  • 威县做网站多少钱如何通过网站后台修改网站
  • 域名备案查询站长之家网站数据库分离怎么做
  • 如何去掉网站后缀wordpress国外有名的网站
  • 西安手机商城网站设计物流网站开发实训
  • 宿迁集团网站建设如何咨询网络服务商
  • 完成公司门户网站建设深圳优秀网站建设公司
  • 办公家具网站建设公司湖北华路建设工程有限公司网站
  • 简洁大气的企业网站wordpress出售电子书
  • 动态手机网站怎么做电子商务主要学什么就业工资
  • 做网站推广需要什么wordpress 和wiki
  • php网站说明广州木马网站建设公司怎么样
  • 建设网站公司管备案么工业设计专业怎么样
  • 游戏官网做的好的网站比分网站建设
  • 做二手货车网站公司工业设计师
  • 职业学校网站模板erp系统教学
  • 网站排名不稳定大宗商品交易平台政策
  • 北京做网站的公司有哪些嵌入式软件开发语言
  • 虫部落导航网站怎么做信息流投放平台
  • 网站开发英文怎么说深圳知名设计公司
  • 沈阳网络公司官网seo综合诊断工具
  • 扬中本地网站佛山模板建站哪家好