標籤:import jsp smart gets 輸入 void 數組 path ++
---恢複內容開始---
1. SmartUpload
此控制項在jsp中被廣泛的使用,而FileUpload控制項主要是用在架構中
2. 如果想要使用,需要在tomcat的lib目錄中,將SmartUpload的jar包拷貝進來
3.通過表單上傳檔案,由於檔案動不動就是幾百k, 表單的方法必須是post,不可能用get方法進行地址修正。
另外,如果要上傳檔案的話,需要對錶單進行封裝 mutipart/form-data
以下是smartupload_demo01.jsp
表單封裝之後,無法通過request內建對象來擷取相應的parameter屬性了,因為轉換為二進位形式了。
可以用smart.getRequest().getParameter()來擷取
上傳圖片檔案是,為了避免同名覆蓋問題,需要上傳時自動產生一個圖片名稱。
格式為 IP地址+時間戳記+隨機數
以上時間戳記的增加,可以寫一個java類來實現。
package lib.liys.timestamp;
import java.text.SimpleDateFormat ;
import java.util.Date ;
import java.util.Random ;
public class IPTimeStamp{
private SimpleDateFormat sdf = null;
private String ip = null ;
public IPTimeStamp(){
}
public IPTimeStamp(String ip){
this.ip = ip ;
}
public String getIPTimeRand(){
StringBuffer buf = new StringBuffer();
if(this.ip!=null){
String s[] = this.ip.split("\\.") ; //通過split返回String 數組
for(String x:s){
buf.append(addZero(x,3));
}
}
buf.append(this.getTimeStamp()) ;
Random r = new Random() ; //3位隨機的整數
for(int i=0;i<3;i++){
buf.append(r.nextInt(10)) ;
}
return buf.toString() ; //StringBuffer轉換為string
}
public String getTimeStamp(){
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ; //定義特定的時間格式
return this.sdf.format(new Date()) ; //格式化日期,返回字串
}
private String addZero(String str,int len){
StringBuffer s = new StringBuffer() ;
s.append(str) ;
while(s.length() < len){
s.insert(0,"0") ; //buffer插入操作,從左邊插入“0”字元
}
return s.toString() ; //StringBuffer轉換為string
}
public static void main(String args[]){ //寫一個main函數執行一下
System.out.println(new IPTimeStamp("192.168.1.1").getIPTimeRand());
}
}
如果javac -d . *.java編譯後,想執行看效果,需要輸入java.lib.liys.timestamp.IPTimeStamp;
最後寫一個jsp檔案
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import = "org.lxh.smart.*"%> //jar包在tomcat下的lib目錄中,需要看jar包內的目錄結構
<%@page import = "lib.liys.timestamp.*"%> //匯入時間戳記類
<html>
<head>
<title>
SmartUpload上傳表單
</title>
</head>
<body>
<% request.setCharacterEncoding("GBK"); %>
<%
SmartUpload smart = new SmartUpload();
smart.initialize(pageContext) ;// 初始化上傳操作
smart.upload();
String name = smart.getRequest().getParameter("uname") ;
IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr());
String ext = smart.getFiles().getFile(0).getFileExt(); //擷取smart副檔名
String fileName = its.getIPTimeRand() + "." + ext ;
smart.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/jspstudy/")+"upload"+java.io.File.separator + fileName) ; //儲存檔案
%>
<%=smart.getFiles().getFile(0).getFileName().matches("^\\w+.(jpg|gif)$")%>
<h2>姓名:<%=name%></h2>
<img src="../upload/<%=fileName%>">
</body>
</html>
如果是多個上傳圖片的話,則需要迴圈擷取
---恢複內容結束---
java web 學習筆記 - jsp用的檔案上傳組件 SmartUpload