描述:文件上传与下载是在JavaEE中常见的功能,实现文件上传与下载的方式有多种,其中文件上传的方式有:

(1)commons-fileupload:

(2)Servlet 3.0 实现文件上传

(3)Ajax异步文件上传

1、文件上传的要求:

(1)form表单method请求方式设置为post(post请求方式不支持)

(2)声明form表单属性:enctype="multipart/form-data",设置其数据格式二二进制

2、使用servlet3.0(及以后版本都支持)完成文件上传

(1)在servlet中声明注解:@MultipartConfig

(2)声明part对象:Part part = request.getPart("file");  //获取这个文件对象

(3)获取本地服务器的img路径:String filePath=request.getServletContext().getRealPath("/img/");

(4)设置文件名称:String fileName = System.currenTimeMills()+request.getSession().getId();

(5)写入文件:part.write(filePath+fileName+".jpg");

3、多文件上传

说明:多文件上传首先需要将利用h5中的特性,form表单添加属性mulitple

(1)声明集合part对象

Collection<Part> part = request.getPart();

(2)进行遍历foreach遍历,写入part.write();

4、使用Ajax文件上传

$.ajax({
 url:'http://localhost:8080/testUpload/test',      //请求上传服务器地址
type:"post",                         //请求方式,必须为post
cache:false,
data:new FormData($("form")[]),              //请求参数,必须设置为二进制形式
processData:false,
contentType:false,
success:function(result){
alert("上传成功!")
$("img").slideToggle()
},
beforeSend:function(){
//让图片显示加载
$("img").slideToggle()
},error:function(){
alert("上传失败")
} })
}

5、文件下载

(1)设置文件下载的格式:  response.setContentType("application/x-download");

(2)设置请求头:  response.addHeader("Content-Disposition","attachment;filename="+name+".jpg");

(3)创建文件对象:  File file = new File(request.getServletContext().getRealPath("/img/"+name+".jpg"));

(4)创建文件输入流对象:  FileInputStream fis = new FileInputStream(file);    //将文件放进文件输入流

(5)设置每秒下载速度:  byte[] b = new byte[1024];

(6)int i=-1;

(7)遍历文件流,进行写入到指定位置

while((i=fis.read(b))>){
response.getOutputStream().write(b,,i);
}

最新文章

  1. foreach循环 Java
  2. Java中BigDecimal的8种舍入模式
  3. Windows API学习---线程与内核对象的同步
  4. 7件你不知道但可以用CSS做的事
  5. 什么时候用copy什么时候用retain (一)
  6. CKEditor和IMCE构建drupal编辑器
  7. win32项目设置窗口全屏
  8. openfire for mac 无法启动
  9. Fragment的生命周期&amp;同一Activity下不同Fragment之间的通信
  10. kibana 访问IP分布图
  11. Activiti(工作流)如何关联业务表
  12. 如何获取app的素材,做出一个高仿的app
  13. [Leetcode] Binary search--275 H-Index
  14. CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction)
  15. SAML2.0 协议初识(一)
  16. ActiveMQ (一) 初识ActiveMQ
  17. 获取屏幕宽高度与可视区域宽高度(availWidth、clientWidth、width、innerWidth)
  18. HIVE使用mysql作为外置数据库配置详情
  19. 【Netty源码学习】DefaultChannelPipeline(三)
  20. 自建log4cxx.sln

热门文章

  1. ios获取系统当前日期并以一定格式显示
  2. 【GDKOI2013选拔】大LCP
  3. 【leetcode】Max Area of Island
  4. 为什么要用setTimeout模拟setInterval ?
  5. IdentityServer4
  6. Codeforces 912D Fishs ( 贪心 &amp;&amp; 概率期望 &amp;&amp; 优先队列 )
  7. 文件操作工具类FileUtils
  8. (WCF) There is already a listener on IP endpoint 0.0.0.0:9999.
  9. selenium,控制滚动条
  10. Android字体设置,Roboto字体使用