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

广州移动网站建设项目网源码

广州移动网站建设,项目网源码,建设工程检测网,wordpress 写文章函数SpringBoot实现文件下载的几种方式 1. 将文件以流的形式一次性读取到内存#xff0c;通过响应输出流输出到前端1.1 下载文件 2. 将输入流中的数据循环写入到响应输出流中#xff0c;而不是一次性读取到内存#xff0c;通过响应输出流输出到前端3. 下载网络文件到本地4. 网络… SpringBoot实现文件下载的几种方式 1. 将文件以流的形式一次性读取到内存通过响应输出流输出到前端1.1 下载文件 2. 将输入流中的数据循环写入到响应输出流中而不是一次性读取到内存通过响应输出流输出到前端3. 下载网络文件到本地4. 网络文件获取到服务器后经服务器处理后响应给前端 1. 将文件以流的形式一次性读取到内存通过响应输出流输出到前端 /** * param path 想要下载的文件的路径 * param response * 功能描述 下载文件: */ RequestMapping(/download) public void download(String path, HttpServletResponse response) { try { // path是指想要下载的文件的路径 File file new File(path); log.info(file.getPath()); // 获取文件名 String filename file.getName(); // 获取文件后缀名 String ext filename.substring(filename.lastIndexOf(.) 1).toLowerCase(); log.info(文件后缀名 ext);// 将文件写入输入流 FileInputStream fileInputStream new FileInputStream(file); InputStream fis new BufferedInputStream(fileInputStream); byte[] buffer new byte[fis.available()]; fis.read(buffer); fis.close();// 清空response response.reset(); // 设置response的Header response.setCharacterEncoding(UTF-8); //Content-Disposition的作用告知浏览器以何种方式显示响应返回的文件用浏览器打开还是以附件的形式下载到本地保存 //attachment表示以附件方式下载 inline表示在线打开 Content-Disposition: inline; filename文件名.mp3 // filename表示文件的默认名称因为网络传输只支持URL编码的相关支付因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称 response.addHeader(Content-Disposition, attachment;filename URLEncoder.encode(filename, UTF-8)); // 告知浏览器文件的大小 response.addHeader(Content-Length, file.length()); OutputStream outputStream new BufferedOutputStream(response.getOutputStream()); response.setContentType(application/octet-stream); outputStream.write(buffer); outputStream.flush(); } catch (IOException ex) { ex.printStackTrace();} } 1.1 下载文件 RequestMapping(getFile) ResponseBody public void getFile(HttpServletResponse response) throws Exception{File readFile new File(/home/ssx/Music/CloudMusic/夜曲-周杰伦.flac);//字节流-用于读文件 这里只是demo用的非缓冲流。实际项目可以用BufferedInputStream。 此功能是读取图片所以用的字节流。如果是文本的话可以用字符流效率高具体类看下面注释// BufferedReader bufferedReader new BufferedReader(new FileReader(readFile));//字符流FileInputStream fileInputStream new FileInputStream(readFile);//字节流//设置文件下载方式response.setHeader(content-disposition,attachment;filename URLEncoder.encode(夜曲-周杰伦.flac,utf-8));//获取servlet响应输出字节流// PrintWriter writer response.getWriter();//字符流ServletOutputStream outputStream response.getOutputStream(); //字节流//流数据交换每次交换10k数据大小 1024k 1mbyte[] bytes new byte[1024*10];int read;do {read fileInputStream.read(bytes);outputStream.write(bytes,0,read);}while (-1 ! read);//关闭资源IOUtils.closeQuietly(fileInputStream);IOUtils.closeQuietly(outputStream); }2. 将输入流中的数据循环写入到响应输出流中而不是一次性读取到内存通过响应输出流输出到前端 /** * param path 指想要下载的文件的路径 * param response * 功能描述 下载文件:将输入流中的数据循环写入到响应输出流中而不是一次性读取到内存 */ RequestMapping(/downloadLocal) public void downloadLocal(String path, HttpServletResponse response) throws IOException { // 读到流中 InputStream inputStream new FileInputStream(path);// 文件的存放路径 response.reset(); response.setContentType(application/octet-stream); String filename new File(path).getName(); response.addHeader(Content-Disposition, attachment; filename URLEncoder.encode(filename, UTF-8)); ServletOutputStream outputStream response.getOutputStream(); byte[] b new byte[1024]; int len; //从输入流中读取一定数量的字节并将其存储在缓冲区字节数组中读到末尾返回-1 while ((len inputStream.read(b)) 0) { outputStream.write(b, 0, len); } inputStream.close(); } 3. 下载网络文件到本地 /** * param path 下载后的文件路径和名称 * param netAddress 文件所在网络地址 * 功能描述 网络文件下载到服务器本地 */ RequestMapping(/netDownloadLocal) public void downloadNet(String netAddress, String path) throws IOException { URL url new URL(netAddress); URLConnection conn url.openConnection(); InputStream inputStream conn.getInputStream(); FileOutputStream fileOutputStream new FileOutputStream(path);int bytesum 0; int byteread; byte[] buffer new byte[1024]; while ((byteread inputStream.read(buffer)) ! -1) { bytesum byteread; System.out.println(bytesum); fileOutputStream.write(buffer, 0, byteread); } fileOutputStream.close(); } 4. 网络文件获取到服务器后经服务器处理后响应给前端 /** * param netAddress * param filename * param isOnLine * param response * 功能描述 网络文件获取到服务器后经服务器处理后响应给前端 */ RequestMapping(/netDownLoadNet) public void netDownLoadNet(String netAddress, String filename, boolean isOnLine, HttpServletResponse response) throws Exception {URL url new URL(netAddress); URLConnection conn url.openConnection(); InputStream inputStream conn.getInputStream();response.reset(); response.setContentType(conn.getContentType()); if (isOnLine) { // 在线打开方式 文件名应该编码成UTF-8 response.setHeader(Content-Disposition, inline; filename URLEncoder.encode(filename, UTF-8)); } else { //纯下载方式 文件名应该编码成UTF-8 response.setHeader(Content-Disposition, attachment; filename URLEncoder.encode(filename, UTF-8)); }byte[] buffer new byte[1024]; int len; OutputStream outputStream response.getOutputStream(); while ((len inputStream.read(buffer)) 0) { outputStream.write(buffer, 0, len); } inputStream.close(); }
http://www.hkea.cn/news/14359889/

相关文章:

  • 做殡葬名片的网站免费推广网站排行榜
  • 电话投放小网站深圳建站公司有推荐的公司吗
  • 新闻有哪些网站有哪些类型阿里云主机可以放几个网站
  • 做振动盘的企业网站产品开发过程
  • wordpress破解主题济南网站怎么做seo
  • 设计网站页面windows7怎么做网站服务器
  • 网站显示速度的代码是什么意思华文细黑做网站有版权吗
  • 可做区域代理的网站哈尔滨seo公司
  • 怎么选择网站建设建盏厂家联系电话
  • 网站建设中服务器的搭建方式建造师直聘网
  • 龙川网站建设影楼修图用什么软件
  • 池州家居网站建设怎么样手机网站 等比缩放
  • 大庆网站建设黑icp备1900网站开发行业前景
  • 贵州省住房和城乡建设厅网站人事教育栏企业管理咨询的内容
  • 河源哪里做网站dw 做静态网站
  • 济宁做网站建设的公司广州建站优化公司
  • 网站开发是自己开发还是外包的wordpress网页走丢
  • 义安区住房和城乡建设局建网站没有网站可以做cpa吗
  • node.js做网站wordpress付费下载插件
  • 论述电子商务网站建设的流程新加坡域名注册网站
  • 响应式网站建设教程网站建设教程公司
  • 网站域名注销电话wordpress插件找回
  • 企业网站开发文档wordpress还是帝国cms对比
  • 健身网站建设app开发多少钱
  • 企业网站的开发背景一个刚做好的网站怎么做seo
  • 外贸购物网站一个网站多少钱
  • 深圳网站设计小程序做t恤的网站
  • 站长工具免费二维码生成器永久免费版下载
  • 跑腿网站建设网络营销方式使用情况数据
  • 南宁制作网站的公司天津猎头公司