java web 學習筆記 - jsp用的檔案上傳組件 SmartUpload

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.