servlet3.0文件上傳與下載


描述:文件上傳與下載是在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);      
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM