45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:搞定java文件上传的步骤

搞定java文件上传的步骤

2016-09-07 08:36:55 来源:www.45fan.com 【

搞定java文件上传的步骤

 

JAVA的文件上传遍一直是一个比较关注的问题,而且有几个NB东西提供了这个功能.

用的最多的算是三个(我就知道这三个)比较强的,一个是比较早的jspsmartupload,另一个是出身名族的commonupload,还有一个就是orellay的了.

我用的比较多是前两个,总的感觉是jspsmartuplod比较灵活,功能上更强一些(一点点吧),但是现在网上也不维护,也不能下载了,特别是它上传的时候把上传文件放到内存里,所以上传文件的大小会和内存有关系.commonupload虽然没有提供很多API,但是它有比较灵活,它上传的过程中会把上传的文件先写入磁盘,所以上传的大小只是带宽有关系,我尝试最大的上传文件的大小是700M,当然是本地测试:>

还有是就是在Linux/Unix系统上传文件的中文问题,我在下面的代码有了一些解决.

下面是前两种方式的上传代码:

try{

//取session 用户oid

int pid = userInfo.getUserId();

String sys_user_id = String.valueOf(pid);

//取init配置文件的参数值

String sitePhysicalPath = (String)init.getObject("SitePhysicalPath");

String saveDir = (String)init.getObject("InfoUploadDir");

String tempDir = (String)init.getObject("InfoUploadDir");

String fileMemo = ""; //文件说明

String fileName = null; //存储到数据库的文件名

String saveName = null; //存储到本地的文件名

String filePath = null; //存储到数据库的文件路径

String savePath = null; //存储到本地的文件路径

long fileSize = 0; //文件大小

int maxPostSize = -1;

int dinfo_upload_id = -1;

%>

<%

//初始化

mySmartUpload.initialize(pageContext);

//上载文件

mySmartUpload.upload();

//循环取得所有上载文件

for(int i=0; i<mySmartUpload.getFiles().getCount(); i++)

{

//取得上载文件

com.jspsmart.upload.File file = mySmartUpload.getFiles().getFile(i);

if(!file.isMissing())

{

fileName = file.getFileName();

//取得文件扩展名file.getFileExt()

try{

saveName = fileName.substring(fileName.lastIndexOf("."));

}catch(Exception e){

saveName = "";

}

//取得文件大小

fileSize = file.getSize();

//存储路径

String sql_id = " SELECT S_INFO_UPLOAD.nextval as seqid FROM dual ";

try{

Statement stmt = con.createStatement();

ResultSet rst = stmt.executeQuery(sql_id);

while(rst.next())

{

dinfo_upload_id = rst.getInt("seqid");

}

}catch(SQLException sqle){

return;

}

filePath = sitePhysicalPath + saveDir + Integer.toString(dinfo_upload_id) + saveName;

savePath = saveDir + Integer.toString(dinfo_upload_id) + saveName;

//存储文件到本地

file.saveAs(filePath);

//存储文件到数据库

switch(i)

{

case 0: fileMemo = (String)mySmartUpload.getRequest().getParameter("memo1"); break;

case 1: fileMemo = (String)mySmartUpload.getRequest().getParameter("memo2"); break;

case 2: fileMemo = (String)mySmartUpload.getRequest().getParameter("memo3"); break;

case 3: fileMemo = (String)mySmartUpload.getRequest().getParameter("memo4"); break;

case 4: fileMemo = (String)mySmartUpload.getRequest().getParameter("memo5"); break;

default: fileMemo = "";

}

String sql = " INSERT INTO info_upload (info_upload_id,sys_user_id,file_size,file_path,utime,deleted) "

+ " VALUES( " + Integer.toString(dinfo_upload_id) + "," + sys_user_id + "," + fileSize + ",'" + savePath + "', SYSDATE , 0 )" ;

sqlcmd cmd = new sqlcmd(con,sql);

//System.out.println(sql);

java.sql.PreparedStatement pstmt = null;

java.sql.Statement stmt = null;

//fileName = fileName.substring(0, fileName.indexOf("."));

String sql_cn = " UPDATE info_upload SET file_name=?,file_memo=? WHERE info_upload_id=? ";

java.io.ByteArrayInputStream bais_name = new java.io.ByteArrayInputStream(fileName.getBytes("ISO-8859-1"));

java.io.InputStreamReader isr_name = new java.io.InputStreamReader((InputStream)bais_name,"GBK");

java.io.ByteArrayInputStream bais_memo = new java.io.ByteArrayInputStream(fileMemo.getBytes("GBK"));

java.io.InputStreamReader isr_memo = new java.io.InputStreamReader((InputStream)bais_memo,"GBK");

try{

stmt = con.createStatement();

stmt.getConnection().setAutoCommit(false);

pstmt = con.prepareStatement(sql_cn);

pstmt.setCharacterStream(1, isr_name, fileName.length());

pstmt.setCharacterStream(2, isr_memo, fileMemo.length());

pstmt.setInt(3, dinfo_upload_id);

//System.out.println(sql_cn);

pstmt.execute();

stmt.executeUpdate("COMMIT");

}catch(Exception exce){

System.out.println(exce);

stmt.executeUpdate("ROLLBACK");

}

}

}

}catch(Exception e){

}

以上是jspsmart的方式,如果想要其它的方式,请下载全部源代码.

现在网上已经不提供jspsmartupload下载,如果您没有这个包可以在本站下载.

点击下载

如果把有什么问题,可与我联系:webmaster@bcxy.com

全部源码及相关文档下载

出处:http://www.bcxy.com/java/javaupload.htm

 

本文地址:http://www.45fan.com/a/question/73575.html
Tags: 彻底 搞定 Java
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部