我是一名初學jsp菜鳥,今天就把自己所寫的jsp上傳文件的代碼給大家分享一下,希望和大家多多交流,互相學習。望指教!
一、單純的上傳文件
1 <%
2 request.setCharacterEncoding("utf-8");
3 String uploadFileName=""; //上傳的文件名
4 String fieldName=""; //表單字段元素的name屬性值
5 //請求信息中的內容是否是multipart類型
6 boolean isMultipart=ServletFileUpload.isMultipartContent(request);
7 //上傳文件的存儲路徑(服務器文件系統上的絕對文件路徑)
8 String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
9 if(isMultipart){
10 FileItemFactory factory=new DiskFileItemFactory();
11 ServletFileUpload upload=new ServletFileUpload(factory);
12 try{
13 //解析form表單中所有文件
14 List<FileItem> items=upload.parseRequest(request);
15 Iterator<FileItem> iter=items.iterator();
16 while(iter.hasNext()){ //依次處理每個文件
17 FileItem item=(FileItem)iter.next();
18 if(item.isFormField()){ //普通表單字段
19 fieldName=item.getFieldName(); //表單字段的name屬性值
20 if("user".equals(fieldName)){
21 //輸出表單字段的值
22 out.print(item.getString("utf-8")+"上傳了文件<br/>");
23 }
24 }else{ //文件表單字段
25 String fileName=item.getName();
26 if(fileName!=null&&!"".equals(fileName)){
27 File fullFile=new File(item.getName());
28 File saveFile=new File(uploadFilePath,fullFile.getName());
29 item.write(saveFile);
30 uploadFileName=fullFile.getName();
31 out.print("上傳成功后的文件名是:"+uploadFileName);
32 }
33 }
34 }
35 }catch(Exception e){
36 e.printStackTrace();
37 }
38 }
39 %>
二、上傳指定格式的文件
<%
request.setCharacterEncoding("utf-8");
String uploadFileName=""; //上傳的文件名
String fieldName=""; //表單字段元素的name屬性值
//請求信息中的內容是否是multipart類型
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
//上傳文件的存儲路徑(服務器文件系統上的絕對文件路徑)
String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
if(isMultipart){
FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
try{
//解析form表單中所有文件
List<FileItem> items=upload.parseRequest(request);
Iterator<FileItem> iter=items.iterator();
while(iter.hasNext()){ //依次處理每個文件
FileItem item=(FileItem)iter.next();
if(item.isFormField()){ //普通表單字段
fieldName=item.getFieldName(); //表單字段的name屬性值
if("user".equals(fieldName)){
//輸出表單字段的值
out.print(item.getString("utf-8")+"上傳了文件<br/>");
}
}else{ //文件表單字段
String fileName=item.getName();
//通過Arrays類的asList()方法創建固定長度的集合
List<String> fileType=Arrays.asList("gif","bmp","jpg");
String ext=fileName.substring(fileName.lastIndexOf(".")+1);
if(!fileType.contains(ext)){//判斷文件類型是否在允許的范圍類
out.print("上傳失敗,文件類型只能是gif、bmp、jpg");
}else{
if(fileName!=null&&!"".equals(fileName)){
File fullFile=new File(item.getName());
File saveFile=new File(uploadFilePath,fullFile.getName());
item.write(saveFile);
uploadFileName=fullFile.getName();
out.print("上傳成功后的文件名是:"+uploadFileName);
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
%>
三、上傳指定格式的文件並限制文件大小
<%
request.setCharacterEncoding("utf-8");
String uploadFileName=""; //上傳的文件名
String fieldName=""; //表單字段元素的name屬性值
//請求信息中的內容是否是multipart類型
boolean isMultipart=ServletFileUpload.isMultipartContent(request);
//上傳文件的存儲路徑(服務器文件系統上的絕對文件路徑)
String uploadFilePath=request.getSession().getServletContext().getRealPath("upload/");
//創建臨時文件目錄路徑
File tempPatchFile=new File("d:/temp/buffer/");
if(!tempPatchFile.exists()){
tempPatchFile.mkdirs();//創建指定的目錄,包括所有必須但不存在的父目錄
}
if(isMultipart){
DiskFileItemFactory factory=new DiskFileItemFactory();
//設置緩沖區大小4kb
factory.setSizeThreshold(4096);
//設置上傳文件用到臨時文件存放路徑
factory.setRepository(tempPatchFile);
ServletFileUpload upload=new ServletFileUpload(factory);
//設置一個完整請求的最大允許大小
upload.setSizeMax(1024*1200);
try{
//解析form表單中所有文件
List<FileItem> items=upload.parseRequest(request);
Iterator<FileItem> iter=items.iterator();
while(iter.hasNext()){ //依次處理每個文件
FileItem item=(FileItem)iter.next();
if(item.isFormField()){ //普通表單字段
fieldName=item.getFieldName(); //表單字段的name屬性值
if("user".equals(fieldName)){
//輸出表單字段的值
out.print(item.getString("utf-8")+"上傳了文件<br/>");
}
}else{ //文件表單字段
String fileName=item.getName();
//通過Arrays類的asList()方法創建固定長度的集合
List<String> fileType=Arrays.asList("gif","bmp","jpg");
String ext=fileName.substring(fileName.lastIndexOf(".")+1);
if(!fileType.contains(ext)){//判斷文件類型是否在允許的范圍類
out.print("上傳失敗,文件類型只能是gif、bmp、jpg");
}else{
if(fileName!=null&&!"".equals(fileName)){
File fullFile=new File(item.getName());
File saveFile=new File(uploadFilePath,fullFile.getName());
item.write(saveFile);
uploadFileName=fullFile.getName();
out.print("上傳成功后的文件名是:"+uploadFileName+",文件大小是:"+item.getSize()+"bytes!");
}
}
}
}
}catch(FileUploadBase.SizeLimitExceededException ex){
out.print("上傳失敗,文件太大,全部文件的最大限制是:"+upload.getSizeMax()+"bytes!");
}catch(Exception e){
e.printStackTrace();
}
}
%>
