在Servlet中
=
javaZoom的包中共包含了
UploadBean
UploadParameters
UploadListener
UploadFile
UploadException
Archiver
MultipartFormDataRequest
其中
在MutipartFormDataRequest中
getParameterNames(name:String):Enumeration
getParameterValue(name:String):String
getParameterValues(name:String):String[]
getFiles():Hashtable
isMultipartFormData(req:HttpServletRequest):boolean
和
MultipartFormDataRequest(req:HttpServletRequest
MultipartFormDataRequest(req:HttpServletRequest)
所有的對Mutipart的內容的分析
if (MultipartFormDataRequest
MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
}
就得到了MutipartFormDataRequest的實例
如果想得到上傳的內容
Hashtable files = mrequest
if(files!=null && !files
UploadFile file=(UploadFile)files
// file:UploadFile 文件
}
在這裡
getData():byte[] 文件的內容
getFileSize():long 文件的長度
getContentType():String 文件的編碼
getFileName():String 文件的名稱
這些信息足夠我們進行一般所想要的操作了
正如uploadBean的名稱所言
在uploadBean中
不過以上每一種形式的保存
如我們需要把上傳文件用自己的方式保存
從byte[]data=file
實例
數據庫表格
lsh char(
nr clob(
//數據庫基本操作
package upload
import java
import javax
import javax
public class DbOps(){
private DataSource ds;
private Connection conn;
private String env=
public String getEnv(){return env;}
public void setEnv(String env){this
public DataSource getDataSource(){//取得數據源(連結池)
try{
Context ictx=new InitalContext();
ds=(DataSource)ictx
}catch(Exception ignore){
//some debug codes
}
return ds;
}
public Connection getConnection(){//取得數據庫連結
if(ds==null)ds=getDataSource();
try{
if(conn==null)conn=ds
}catch(Exception ignore){
//some debug codes
}
return conn;
}
}
//存儲
package upload
import java
public class DBStore(){
public static String ISFILEEXIST=
public static String INSERTFILE=
public static String UPDATEFILE=
Connection conn;
DbOps dbops;
protected boolean isFileExist(String lsh)throws SQLException{
PreparedStatement pst=conn
pst
ResultSet rs=pst
int count;
for(count=
pst
if(count<=0)return false;
else return true;
}
protected void insertFile(String lsh)throws SQLException{
PreparedStatement pst=conn.prepareStatement(INSERTFILE);
pst.setString(1,lsh);
pst.executeUpdate();
pst.close();
}
protected void updateFile(String lsh,byte[]data)throws SQLException{
PreparedStatement pst=conn.prepareStatement(UPDATEFILE);
pst.setBytes(1,data);
pst.setString(2,lsh);
pst.executeUpdate();
pst.close();
}
public void saveFile(String lsh,byte[]data)throws SQLException{
if(lsh==null || data==null ||lsh.trim().length()==0)return;
if(dbops==null)dbops=new DbOps();
if(conn==null)conn=dbops.getConnection();
if(!isFileExist(lsh)){
insertFile(lsh);
}
updateFile(lsh,data);
conn.close();
conn=null;
}
}
//servlet 片斷(servlet 中應包含javazoom.upload.*;java.util.*;)
DBStore dbs=new DBStore();
if (MultipartFormDataRequest.isMultipartFormData(request))
{
MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
if(mrequest.getParameter("submit")!=null){
String lsh=mrequest.getParameter("lsh");
Hashtable files = mrequest.getFiles();
UploadFile file = files.get("ufile");
byte[]data=file.getData();
try{
dbs.saveFile(lsh,data);
}catch(Exception e){
//debugCodes
}
}
}
//Submit html 片斷
實際運行以上代碼時,注意DbOps的env參數需要和實際的服務器配置的連結池參數一致,並且需要有upload.jar 和 cos.jar這兩個包。Tw.WinGWit.CoM如果是在WebShpere 4上,請把他們拷貝到項目的webApplication\WEB-INF\lib下。如果是Resin上,把他們拷貝到項目的WEB-INF\lib下。
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26648.html