一.圖片上傳:javascript
FileUpload是用來實現Java環境下的文件上傳功能,與常見的SmartUpload齊名css
客戶端: html
1.form的enctype屬性設置爲 multipart/form-data,設置該值後,瀏覽器在上傳文件時,將把文件數據附帶在Http請求體中,並使用MIME協議對上傳文件進行描述,以方便接收方對上傳數據進行解析和處理。java
2.form的method屬性設置爲 POST
3.添加文件上傳項<input type=「file」 ... />數組
上傳步驟:( smartupload)瀏覽器
1.引入jar文件服務器
jspsmartupload.jarapp
2.實例化上載類dom
SmartUpload mySmartUpload = new SmartUpload();jsp
3.初始化 (pageContext)
mySmartUpload.initialize(pageContext);
4.準備上傳 (沒有直接上傳呢)
mySmartUpload.upload();
5.保存上傳文件 (提交)
mySmartUpload.save("/upup");
•需求:將一張圖片上傳到服務器的upup文件夾下
文件路徑
建立表單上傳頁面
1 indexTest.jsp表單上傳頁面 2 3 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 4 <% 5 String path = request.getContextPath(); 6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 7 %> 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <base href="<%=basePath%>"> 13 14 <title>test上傳</title> 15 <meta http-equiv="pragma" content="no-cache"> 16 <meta http-equiv="cache-control" content="no-cache"> 17 <meta http-equiv="expires" content="0"> 18 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 19 <meta http-equiv="description" content="This is my page"> 20 <!-- 21 <link rel="stylesheet" type="text/css" href="styles.css"> 22 --> 23 </head> 24 25 <body> 26 <!-- 上傳的表單要這樣被封裝 --> 27 <form action="up.jsp" method="post" enctype="multipart/form-data"/> 28 請輸入:<input type="text" name="name"/><br/> 29 <input type="file" name="file"/> 30 <input type="submit" value="上傳"> 31 32 </form> 33 </body> 34 </html>
1 上傳流程 2 3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 4 <%@ page import="com.jspsmart.upload.*"%> 5 6 7 <% 8 String path = request.getContextPath(); 9 String basePath = request.getScheme() + "://" 10 + request.getServerName() + ":" + request.getServerPort() 11 + path + "/"; 12 %> 13 14 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 15 <html> 16 <head> 17 <base href="<%=basePath%>"> 18 19 <title>My JSP 'up.jsp' starting page</title> 20 21 <meta http-equiv="pragma" content="no-cache"> 22 <meta http-equiv="cache-control" content="no-cache"> 23 <meta http-equiv="expires" content="0"> 24 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 25 <meta http-equiv="description" content="This is my page"> 26 <!-- 27 <link rel="stylesheet" type="text/css" href="styles.css"> 28 --> 29 30 </head> 31 32 <body> 33 <% 34 //步驟一:實例化上載bean 35 SmartUpload mySmartUpload = new SmartUpload(); 36 37 //步驟二:初始化 38 mySmartUpload.initialize(pageContext); 39 40 //步驟三:準備上載文件 41 mySmartUpload.upload(); 42 43 //步驟四:保存文件 44 // mySmartUpload.save("/upup"); 45 46 //////////////////////////////////////////////////////////////////// 47 //表單被封裝後直接經過request不能得到值 48 // String name=request.getParameter("name"); 49 String name=mySmartUpload.getRequest().getParameter("name"); 50 51 //取得文件擴展名,後綴 52 String ext=mySmartUpload.getFiles().getFile(0).getFileExt(); 53 54 //利用自定義名字上傳,保存文件名 getFiles()獲得全部file類型數組,可用做批量上傳 savaAs()方法用來更更名字 55 // mySmartUpload.getFiles().getFile(0).saveAs("/upup/"+name+"."+ext); 56 57 //利用隨機數名字上傳,保存文件名 58 String uuid = UUID.randomUUID().toString(); 59 mySmartUpload.getFiles().getFile(0).saveAs("/upup/"+uuid+"."+ext); 60 %> 61 62 <h1>上傳成功</h1> 63 64 </body> 65 </html>
1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 2 <%@ page import="java.util.*" %> 3 <%@ page import="java.text.SimpleDateFormat" %> 4 <%@ page import="com.jspsmart.upload.*" %> 5 6 7 <% 8 response.setHeader("Expires","0"); 9 response.setHeader("Pragma","nono-catch"); 10 response.setHeader("Catch-Control","no-cache"); 11 %> 12 13 <% 14 String _contexPath = request.getContextPath(); 15 String ext = ""; 16 17 %> 18 19 <html> 20 <head> 21 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 22 <script language="JavaScript" src="<%=_contexPath%>/css/common.js"></script> 23 <title>……</title> 24 </head> 25 <body> 26 <% 27 28 String trace = ""; 29 String filename = ""; 30 try 31 { 32 //實例化上載bean 33 SmartUpload mySmartUpload = new SmartUpload(); 34 35 //初始化 36 mySmartUpload.initialize(pageContext); 37 38 // 設定上傳限制 39 // 1.限制每一個上傳文件的最大值 40 mySmartUpload.setMaxFileSize(500 * 1024 * 1024 * 1024); 41 // 2.限制總上傳數據的長度。 42 //mySmartUpload.setTotalMaxFileSize(200000000); 43 // 3.設定容許上傳的文件(經過擴展名限制),僅容許doc,txt文件。 44 //mySmartUpload.setAllowedFilesList("doc,txt"); 45 // 4.設定禁止上傳的文件(經過擴展名限制),禁止上傳帶有exe,bat,jsp,htm,html擴展名的文件和沒有擴展名的文件。 46 //mySmartUpload.setDeniedFilesList("exe,bat,jsp,htm,html,,"); 47 48 //上載文件 49 mySmartUpload.upload(); 50 // 將上傳文件所有保存到指定目錄 51 //int count = mySmartUpload.save("/upload"); 52 //System.out.println(mySmartUpload.getFiles().getCount() + "個文件上傳成功!<br>"); 53 54 //得到Request對象 55 //re1 = (HttpServletRequest)pageContext.getRequest(); 56 //re1 = (HttpServletRequest)mySmartUpload.getRequest(); 57 //String other = mySmartUpload.getRequest().getParameter("other"); 58 59 60 //循環取得全部上載的文件 61 62 for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) 63 { 64 //取得上載的文件 65 com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i); 66 67 if (!myFile.isMissing()) 68 { 69 ext = myFile.getFileExt(); 70 //全名(絕對路徑+名稱) 71 String myFilePath = myFile.getFilePathName(); 72 //取得文件的大小 73 int fileSize = myFile.getSize(); 74 filename = new String(myFile.getFileName().getBytes(),"utf-8"); 75 // System.out.print(filename); 76 //另存路徑 77 //String jspPath = application.getRealPath(request.getRequestURI());//本JSP文件的服務器絕對路徑 78 String filePath = getServletContext().getRealPath("/imgupload/");//本WEB程序根目錄服務器絕對路徑 79 80 //filePath += "\\UserFiles\\Image\\"; 81 82 83 //要建立的文件最終保存目錄 84 java.io.File file = new java.io.File( filePath ); 85 86 // System.out.println("filepath==="+filePath); 87 88 if(file.exists()) 89 file.mkdirs(); 90 91 92 // trace += ((new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))+"."+ext);//最終保存路徑 93 94 95 // request.setAttribute("Image",trace); 96 // System.out.println("trace==="+filename); 97 98 myFile.saveAs(filePath + "\\" + filename); 99 100 // 將文件另存 101 //myFile.saveAs("\\upload\\" + myFile.getFileName()); 102 // 另存到以WEB應用程序的根目錄爲文件根目錄的目錄下 103 //myFile.saveAs("\\upload\\" + myFile.getFileName(), SmartUpload.SAVE_VIRTUAL); 104 //將文件另存到指定目錄(操做系統的目錄) 105 //myFile.saveAs(trace, SmartUpload.SAVE_PHYSICAL); 106 } 107 else 108 { 109 // 若文件不存在則繼續 110 continue; 111 112 } 113 }//end for 114 }catch(Exception SE){ 115 System.out.println("com.jspsmart.upload.SmartUpload上傳期間產生錯誤!"); 116 } 117 %> 118 <script language='javascript'> 119 alert('上傳成功'); 120 </script> 121 <img src="imgupload/<%=filename %>"> 122 </body> 123 </html>
運行結果