JAVA上传与下载
java下载指定地址的文件
package com.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Date; public class TestFile { public static void main(String[] args) { try { int byteSum = 0;//已下载字节数 int byteRead = 0;//读取字节数 int byteCount = 0;//总字节数 String filePath = "http://123.157.149.169/down/37f3e48bf5a412ea27f01be2b5e00a4c-18173940/%5BROSI%5D2013.09.22%20NO.659%5B25%2B1P%5D.rar?cts=223A167A86A3&ctp=223A167A86A3&ctt=1379946470&limit=3&spd=0&ctk=0d4b4e4b39e9b9a1c8d4104e07a79c90&chk=37f3e48bf5a412ea27f01be2b5e00a4c-18173940&mtd=1"; URL url = new URL(filePath); URLConnection conn = url.openConnection(); //获取文件名 String path = url.getPath(); Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssms"); String fileName = sdf.format(d) + path.substring(path.lastIndexOf(".")); System.out.println("文件名称:"+ fileName ); //获取总字节数 byteCount = conn.getContentLength(); double len = Double.parseDouble(byteCount+"")/(1024*1024); DecimalFormat df = new DecimalFormat("0.##"); System.out.println("文件大小:" + df.format(len) + "MB"); InputStream inStream = conn.getInputStream(); FileOutputStream fs = new FileOutputStream("E:/"+fileName); byte[] buffer = new byte[1204]; System.out.println("文件开始下载...."); while (( byteRead = inStream.read(buffer)) != -1) { byteSum += byteRead; int num = byteSum*100/Integer.parseInt(byteCount+""); System.out.println("已下载"+ num +"%...."); fs.write(buffer, 0, byteRead); } System.out.println("文件下载完成!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
java如何将导出的excel下载到客户端
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 利用Servlet导出Excel * @author CHUNBIN * */ public class ExportExcelServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8");//设置request的编码方式,防止中文乱码 String fileName ="导出数据";//设置导出的文件名称 StringBuffer sb = new StringBuffer(request.getParameter("tableInfo"));//将表格信息放入内存 String contentType = "application/vnd.ms-excel";//定义导出文件的格式的字符串 String recommendedName = new String(fileName.getBytes(),"iso_8859_1");//设置文件名称的编码格式 response.setContentType(contentType);//设置导出文件格式 response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName + "\"");// response.resetBuffer(); //利用输出输入流导出文件 ServletOutputStream sos = response.getOutputStream(); sos.write(sb.toString().getBytes()); sos.flush(); sos.close(); } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>导出Excel</title> <script type="text/javascript"> function test(){ document.getElementById("tableInfo").value=document.getElementById("table").innerHTML; } </script> <style> body{font-family:宋体;font-size:11pt} </style> </head> <body> <form action="<%=request.getContextPath()%>/servlet/ExportExcelServlet" method="post"> <span id="table"> <table bgcolor="#EEECF2" bordercolor="#A3B2CC" border="1" cellspacing="0"> <tr><th>学号</th><th>姓名</th><th>科目</th><th>分数</th></tr> <tr><td>10001</td><td>赵二</td><td>高数</td><td>82</td></tr> <tr><td>10002</td><td>张三</td><td>高数</td><td>94</td></tr> <tr><td>10001</td><td>赵二</td><td>线数</td><td>77</td></tr> <tr><td>10002</td><td>张三</td><td>线数</td><td>61</td></tr> </table> </span> <input type="submit" name="Excel" value="导出表格" onclick="test()"/> <input type="hidden" id="tableInfo" name="tableInfo" value=""/> </form> </body> </html>
upload_json.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*,java.io.*"%> <%@ page import="java.text.SimpleDateFormat"%> <%@ page import="org.apache.commons.fileupload.*"%> <%@ page import="org.apache.commons.fileupload.disk.*"%> <%@ page import="org.apache.commons.fileupload.servlet.*"%> <%@ page import="com.opensymphony.xwork2.ActionContext"%> <%@ page import="org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper"%> <%@ page import="org.json.simple.*"%> <% //文件保存目录路径 String savePath = pageContext.getServletContext().getRealPath("/") + "kindeditor/attached/"; //文件保存目录URL String saveUrl = request.getContextPath() + "/kindeditor/attached/"; //定义允许上传的文件扩展名 HashMap<String, String> extMap = new HashMap<String, String>(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); extMap.put("flash", "swf,flv"); extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"); //最大文件大小 long maxSize = 1000000; response.setContentType("text/html; charset=UTF-8"); if (!ServletFileUpload.isMultipartContent(request)) { out.println(getError("请选择文件。")); return; } //检查目录 File uploadDir = new File(savePath); if (!uploadDir.isDirectory()) { out.println(getError("上传目录不存在。")); return; } //检查目录写权限 if (!uploadDir.canWrite()) { out.println(getError("上传目录没有写权限。")); return; } String dirName = request.getParameter("dir"); if (dirName == null) { dirName = "image"; } if (!extMap.containsKey(dirName)) { out.println(getError("目录名不正确。")); return; } //创建文件夹 savePath += dirName + "/"; saveUrl += dirName + "/"; File saveDirFile = new File(savePath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; File dirFile = new File(savePath); if (!dirFile.exists()) { dirFile.mkdirs(); } MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request; //获得上传的文件名 String fileName = wrapper.getFileNames("imgFile")[0];//imgFile,imgFile,imgFile //获得文件过滤器 File file = wrapper.getFiles("imgFile")[0]; //检查扩展名 String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1) .toLowerCase(); if (!Arrays.<String> asList(extMap.get(dirName).split(",")) .contains(fileExt)) { out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。")); return; } //检查文件大小 if (file.length() > maxSize) { out.println(getError("上传文件大小超过限制。")); return; } //重构上传图片的名称 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String newImgName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; byte[] buffer = new byte[1024]; //获取文件输出流 FileOutputStream fos = new FileOutputStream(savePath + "/" + newImgName); //System.out.println("########" + saveUrl + "@@"+ newImgName); //获取内存中当前文件输入流 InputStream in = new FileInputStream(file); try { int num = 0; while ((num = in.read(buffer)) > 0) { fos.write(buffer, 0, num); } } catch (Exception e) { e.printStackTrace(System.err); } finally { in.close(); fos.close(); } JSONObject obj = new JSONObject(); obj.put("error", 0); obj.put("url", saveUrl + newImgName); out.println(obj.toJSONString()); %> <%!private String getError(String message) { JSONObject obj = new JSONObject(); obj.put("error", 1); obj.put("message", message); return obj.toJSONString(); }%>
struts下载文件配置
public String download() throws Exception { uploadFileName="中文.jpg"; downStream = ServletActionContext.getServletContext() .getResourceAsStream(inputPath); return SUCCESS; } <action name="download" class="upload.DownloadAction" method="download"> <!-- 指定被下载资源的位置 --> <param name="inputPath">\download\中文.jpg</param> <!-- 配置结果类型为stream的结果 --> <result name="success" type="stream"> <!-- 指定返回下载文件的InputStream --> <param name="inputName">downStream</param> <!-- 指定下载文件的文件类型 --> <param name="contentType">image/jpg</param> <param name="contentDisposition">attachment;filename=${uploadFileName}</param> <!-- 指定下载文件的缓冲大小 --> <param name="bufferSize">4096</param> </result> <result name="input">/upload.jsp </result> </action> 页面 <a href="download.action">下载包含中文文件名的文件</a>
/这一段代码我也是不知道是哪里的 先放上去 以后再看吧 public String executeCommandUDownload(ActionContext context)throws Exception{ HttpServletResponse response = context.getResponse(); response.setCharacterEncoding("UTF-8"); boolean isOnLine = false; String fileName = context.getRequest().getParameter("fileName"); Connection con = null; HttpServletRequest request = context.getRequest(); String filePath = null; BufferedInputStream buffer=null; OutputStream out=null; try { con = this.getConnection(context); if("".equals(fileName) || fileName == null){ FileInfoBean bean = new FileInfoBean(); fileName = bean.findName(con, id); } File f = new File(filePath); //检查该文件是否存在 if(!f.exists()){ response.sendError(404,"File not found!"); return "File not found!"; } buffer = new BufferedInputStream(new FileInputStream(f)); byte[] buf = new byte[1024]; int len = 0; response.reset(); //非常重要 if(isOnLine){ //在线打开方式 URL u = new URL("file:///"+filePath); response.setContentType(u.openConnection().getContentType()); response.setHeader("Content-Disposition", "inline; filename="+(f.getName()).getBytes("gbk")); //文件名应该编码成UTF-8 } else{ //纯下载方式 response.setContentType("application/x-msdownload"); response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(f.getName(),"UTF-8")); } out = response.getOutputStream(); while((len = buffer.read(buf)) >0) out.write(buf,0,len); }catch(Throwable e) { e.printStackTrace(); }finally { try { buffer.close(); out.close(); }catch(Throwable e) { e.printStackTrace(); } } return ""; }
JAVA上传与下载的更多相关文章
- java上传、下载、删除ftp文件
一共三个类,一个工具类Ftputil.,一个实体类Kmconfig.一个测试类Test 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/669710 ...
- java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决
情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...
- Java上传和下载
1.文件的上传 [1] 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. [2] 表单的设置 > 向服务器上传一个文件时,表单要 ...
- Java web实时进度条整个系统共用(如java上传、下载进度条、导入、导出excel进度条等)
先上图: 文件上传的: 2017-05-04再次改进.在上传过程中用户可以按 Esc 来取消上传(取消当前上传,或者是全部上传)... 2019-03-26更新进度条显示体验 从服务器上压缩下载: 从 ...
- Java实现FTP文件与文件夹的上传和下载
Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- java文件上传和下载
简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...
- Java实现FTP文件上传与下载
实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...
随机推荐
- VR全景:互联网与实体店的完美结合
VR元年已过,VR项目.VR创业潮转为理性,VR行业分为两个方向:硬件和内容.硬件又分为VR头显和辅助设备,内容又分为VR全景和VR虚拟内容,如游戏.娱乐.根据行业划分为VR+购物,VR+教育,VR ...
- spring-boot整合dubbo:Spring-boot-dubbo-starter
为什么要写这个小工具 如果你用过Spring-boot来提供dubbo服务,相信使用中有很多"不爽"的地方.既然使用spring boot,那么能用注解的地方绝不用xml配置,这才 ...
- Java内存使用量测试
JVM内存使用量测试测试各种不同的数据结构在JVM中的内存使用量 import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import java.lang. ...
- Oracle 12C 新特性之非分区表转分区表online clause(不停业务+索引有效)
12c以前非分区表需要转换为分区, 如果不停业务的话可以使用在线重定义,只有在表进行切换的时候会有短暂的锁表. 12c 中alter table online clause 实现了表上现有的索引有效, ...
- 4、Swing在JPanel中添加背景图片方法
4.Jpanel面板中加载背景图片 在实际应用Java做界面的过程中,常常会涉及到加载背景图片以使页面美化.下面整理了一个小模块以便于调用. 1 package com.tntxia.commonsw ...
- vue的双向绑定原理及实现
前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图 ...
- CentOS6.7 防火墙规则(Iptables)
查看防火墙的状态 /etc/init.d/iptables status 开启防火墙 /etc/init.d/iptables start 关闭防火墙 /etc/init.d/iptables sto ...
- 多线程编程-- part 3 多线程同步->synchronized关键字
多线程同时访问一个资源,可以会产生不可预料的结果,所以为这个资源加锁,访问资源的第一个线程为其加锁后,其他线程便不能在使用那个资源,直到锁被解除. 举个例子: 存款1000元,能取出800的时候我就取 ...
- OpenStack(企业私有云)万里长征第二步——使用Fuel部署
一.前言 最近一直在使用DevStack来安装OpenStack,注意一直二字,部署了一遍又一遍,操作系统怕是安装了不下上百次,有时是为了验证新的方案,有时是安装出错,还有时是运行过程中出错.总之是碰 ...
- spark 2.1.0 集群安装
jdk安装 http://www.cnblogs.com/xiaojf/p/6568426.html scala2.11 安装 http://www.cnblogs.com/xiaojf/p/6568 ...