1. 程式人生 > >檔案的上傳與下載

檔案的上傳與下載

所需jar包:commons-fileupload-1.2.1.jar commons-io-2.0`

JSP:

    <form action="UploadFile" method="post" enctype="multipart/form-data">
        上傳檔案1:<input type="file" name="filename"><br>
        上傳檔案2:<input type="file" name="filename"><br>
        <input type="submit" value="提交">
    </form>

Servlet:
步驟:
1.建立檔案屬性的工廠類
DiskFileItemFactory df=new DisFileItemFactory;
2.使用工廠類來建立解析二進位制流的物件
ServletFileUpload sf=new ServletFileUpload(df);
3.設定編碼
sf.setHeaderEncoding=”utf-8”
4.解析二進位制流,從中獲取解析到的二進位制流資料
List fileItems=sf.parseRequest(request);
5.從流中獲取這個流物件
for(FileItem file:fileItems){
InputStream is=file.getInputStream();
//指定檔案上傳路徑 如img資料夾
String path=request.getSession().getServletContext().getRealPath(“img”)+”\”+file.getName()
//輸出流讀
FileOutputStream fos=new FileOutputStream(new File(path));
int i=0;
while((i=is.read)!=-1){
fos.write(i)
}
//關流
fos.close();
is.close();
}

檔案下載
通過連結下載,瀏覽器會自動識別檔案,遇到不認識的格式就下載,認識的就開啟,如果是圖片就直接開啟,是壓縮包就下載,例:
a href=”/FileUpload/img/03.zip”>壓縮包
a href=”/FileUpload/img/1.jpg”>圖片

此處主要是通過Servlet下載
下載列表:br
a href=”filedown?filename=1.jpg”>圖1 br
a href=”filedown?filename=上傳祕籍.txt”>上傳祕籍
Servlet:
步驟:
1.得到請求檔名
String filename=request.getParameter(“filename”);
2.得到下載的檔案路徑
String path=request.getSession().getServletContext().getRealPath(“img”).
//新增響應頭資訊
response.addHeader(“Content-type”,”application/octet-stream”);
//也可以設定響應頭
// response.setContentType(getServletContext().getMimeType(filename));
response.addHeader(“Content-Disposition”,”attachment;filename=”+URLEncoder.encode(filename,”utf-8”)); //URLEncoder.encode將指定的檔案的編碼格式指定”);
//讀取目標檔案
String fullFilename = path+”\”+filename;
InputStream is=new FileInputStream(fullFilename);
OutputStream os=response.getOutputStream();
int i=0;
while((i=is.read())!=-1){
os.write(i);
}
os.close();
is.close();