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

电子商城网站建设与维护做简易动画的网站

电子商城网站建设与维护,做简易动画的网站,电子网站建设方案,漳州网站开发去博大钱少a文章目录需求分析实现步骤示例代码下载的文件中文名显示问题需求 1.页面显示超链接 2.点击超链接后弹出下载对话框 3.完成图片文件下载 分析 超链接指向的资源如果能够被浏览器解析#xff0c;则直接在浏览器中展示#xff0c;如果不能解析#xff0c;则弹出下载提示框。… 文章目录需求分析实现步骤示例代码下载的文件中文名显示问题需求 1.页面显示超链接 2.点击超链接后弹出下载对话框 3.完成图片文件下载 分析 超链接指向的资源如果能够被浏览器解析则直接在浏览器中展示如果不能解析则弹出下载提示框。如果希望无论返回什么资源都不要解析而是让用户下载那么就必须使用 content-disposition 响应头告诉客户端返回的资源响应体的数据以附件的形式打开。 实现步骤 1.开发前端页面使用超链接标签href 属性指向一个 Servlet并且传递下载资源的名称 2.实现后端逻辑定义一个 Servlet获取下载资源的名称再根据资源名称将对应的资源加载入内存中再从内存输出到 Response对象中再返回给客户端 2.1.获取参数 2.2.使用字节输入流读取资源文件加载进内存中 2.3.设置响应头content-type 和 content-disposition 2.4.使用字节输出流写入到 Response 对象中。具体是从内存写入到 Response 的字节输出流中再从字节输出流写入到 Response 对象中 2.5.服务器从 Response 对象中获取数据构建成响应报文发送给客户端这步服务器自动完成 说明 response.setHeader(content-disposition, attachement;filename123.jpeg);上述代码表示将响应头 content-disposition 的值设为 attachement;filename123.jpeg。其中 attachement 表示响应的资源以附件形式打开filename 是弹出的下载对话框中显示的文件名称以及文件下载后的文件名称。 示例代码 前端页面示例代码 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body a href/servlet_demo/download?fileName1.jpeg图片/a a href/servlet_demo/download?fileName1.avi视频/a /body /html服务端示例代码 package priv.lwx.javaex.servlet_demo.web.servlet.download; /*** description** author liaowenxiong* date 2022/1/12 21:57*/import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException;WebServlet(/download) public class DownloadServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1.获取请求参数fileNameString fileName request.getParameter(fileName);// 2.使用字节输入流加载文件进内存// 2.1.获取文件的服务器路径String realPath this.getServletContext().getRealPath(/image/ fileName);// 2.2.获取文件的文件字节输入流用文件字节流关联文件FileInputStream fis new FileInputStream(realPath); // 这步就完成了读取文件数据进内存的操作System.out.println(fis);// 3.设置响应头// 3.1.设置响应头content-typeServletContext context this.getServletContext();// 获取文件的MIME类型String mimeType context.getMimeType(fileName);// 告诉客户端响应体的数据类型response.setHeader(content-type, mimeType);// 3.2.设置响应头content-dispositionresponse.setHeader(content-disposition, attachement;filename fileName);// 4.将输入流的数据写入到输出流中类似文件复制的操作// 4.1.获取字节输出流ServletOutputStream sos response.getOutputStream();// 4.2.定义读取到的字节数据的缓冲区byte[] buff new byte[1024 * 8];int len 0;// 将字节数据读取到字节数组中返回读取到的字节数如果返回的字节数不是-1说明没有读到文件末尾// 注意字节输入流每次读取到字节数组中的数据会覆盖原来的旧数据while ((len fis.read(buff)) ! -1) {// 将字节数组中的字节数据写入到字节输出流中sos.write(buff, 0, len);}// 5.释放资源fis.close();} }下载的文件中文名显示问题 如果你下载的文件名称是中文不同浏览器版本会有不同的显示不过都是错误的显示。 解决的办法判断浏览器的版本根据不同的浏览器版本对文件名进行不同的编码再返回给客户端显示。 处理文件名称的示例代码如下 package priv.lwx.javaex.servlet_demo.util;import Decoder.BASE64Encoder;import java.io.UnsupportedEncodingException; import java.net.URLEncoder;/*** 处理下载文件的中文名无法显示的问题** author liaowenxiong* date 2022/1/13 11:55*/public class DownloadUtils {public static String getFileName(String agent, String filename) throws UnsupportedEncodingException, UnsupportedEncodingException {if (agent.contains(МЅIЕ)) {// IE浏览器filename URLEncoder.encode(filename, utf-8);filename filename.replace(, );} else if (agent.contains(Firefox)) {//火狐浏览器BASE64Encoder base64Encoder new BASE64Encoder();filename ?utf-8?B? base64Encoder.encode(filename.getBytes(utf-8)) ?;} else {//其它浏览器filename URLEncoder.encode(filename, utf-8);}return filename;} }最终完整的文件下载的示例代码 package priv.lwx.javaex.servlet_demo.web.servlet.download; /*** 文件下载的示例代码** author liaowenxiong* date 2022/1/12 21:57*/import priv.lwx.javaex.servlet_demo.util.DownloadUtils;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException;WebServlet(/download) public class DownloadServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1.获取请求参数fileNameString fileName request.getParameter(fileName);// 2.使用字节输入流加载文件进内存// 2.1.获取文件的服务器路径String realPath this.getServletContext().getRealPath(/image/ fileName);// 2.2.获取文件的文件字节输入流用文件字节流关联文件FileInputStream fis new FileInputStream(realPath); // 这步就完成了读取文件数据进内存的操作// System.out.println(fis);// 3.设置响应头// 3.1.设置响应头content-typeServletContext context this.getServletContext();// 获取文件的MIME类型String mimeType context.getMimeType(fileName);// 告诉客户端响应体的数据类型response.setHeader(content-type, mimeType);// 3.2.设置响应头content-disposition// 获取请求头user-agent/* String agent request.getHeader(user-agent);// 根据浏览器版本对文件名进行不同的处理以解决中文无法显示的问题fileName DownloadUtils.getFileName(agent, fileName);*/response.setHeader(content-disposition, attachement;filename fileName);// filename是在下载提示框显示的文件名// 4.将输入流的数据写入到输出流中类似文件复制的操作// 4.1.获取字节输出流ServletOutputStream sos response.getOutputStream();// 4.2.定义读取到的字节数据的缓冲区byte[] buff new byte[1024 * 8];int len 0;// 将字节数据读取到字节数组中返回读取到的字节数如果返回的字节数不是-1说明没有读到文件末尾// 注意字节输入流每次读取到字节数组中的数据会覆盖原来的旧数据while ((len fis.read(buff)) ! -1) {// 将字节数组中的字节数据写入到字节输出流中sos.write(buff, 0, len);}// 5.释放资源fis.close();} }
http://wiki.neutronadmin.com/news/213244/

相关文章:

  • 长沙模板网站建设企业网站托管方式
  • 直播网站怎么做个人网站建设教程
  • FLASK做wiki网站wordpress怎样修改主题模版
  • 军事网站 模板app网站开发书籍下载
  • 汕头市国外网站建设公司黄岛开发区网站制作
  • 方寸网站建设深圳网站建设推广方法
  • 金塔凯元建设集团有限公司官方网站晋江网站设计
  • 空间站 参考消息国内做网站上市公司
  • 上海高端网站lsp专用浏览器
  • 网站建设项目表宝坻建设路小学网站
  • 清远专业网站制作公司建设微网站项目报告
  • 黄页网站推广app哈尔滨市建设工程信息网官网
  • 建设网站的好处静态化网站和app的区别
  • 网站建设尚品宁夏信用建设官方网站
  • 网站建设作业素材平面设计素材包
  • 检查网站的跳转路径是否清晰 哪里要优化品牌建设培训心得体会
  • 潍坊网站排名公司北京华夏网站建设设计公司
  • wordpress子目录站点网站管理入口
  • 做网站所用的工具.net网站开发实验报告
  • 长沙网站 建设推广世云网络备案新增网站备案
  • 网站建设与管理习题一辽宁建设工程信息网招标软件
  • 什么网站收录排名最高外链博客网站
  • 青岛红岛做网站电商平台的搭建
  • 安徽建站系统深圳网站建设公司服务怎么做
  • 百度怎么自己做网站购物商城设计
  • 摄影网站规划设计书长丰县建设局网站
  • 旅游微网站建设做网站的公司还市场吗
  • 如何自建网站卖产品网页是由什么语言编程的
  • 深圳家居网站建设公司wordpress修改页尾
  • 找印度人做网站做的好的响应式网站