描述:文件上傳與下載是在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")[0]), //請求參數,必須設置為二進制形式 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))>0){ response.getOutputStream().write(b,0,i); }