- 浏览: 301398 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
tacyuuhon:
这个代码就有问题。当前的 int activeSessions ...
HttpSessionListener统计在线人数 -
yangleilt:
唉。。能通俗的说一下不?你说的这些百科上到处都是的!
LDAP是什么? -
hezhou_0521:
你显示正确了吗?
HttpSessionListener统计在线人数 -
sevk:
我喜欢用vim或gvim,比Ultra Edit 顺手
让Ultra Edit和Keil结合的更紧密
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的方式,如果想要其它的方式,请下载全部源代码.
//upload_fileUpload.jsp
<%@ include file = "../../backgeneral.jsp"%>
<%@ contentType="text/html;charset=GBK" %>
<jsp:useBean id="userInfo" scope="session" class="com.ges.hbgov.UserInfo"/>
<%@ page import="org.apache.commons.fileupload.*" %>
<%
try{
//request.setCharacterEncoding("GBK");
//取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;
%>
<%
DiskFileUpload df = new DiskFileUpload();
//设定上传文件大小
df.setSizeMax(maxPostSize);
//设定临时目录
df.setRepositoryPath(sitePhysicalPath + tempDir);
//取得request信息
List items = df.parseRequest(request);
Iterator iter = items.iterator();
int temp = 0;
FileItem tempItem = null;
while(iter.hasNext()){
temp++;
FileItem item = (FileItem)iter.next();
if(item.isFormField()) //取得文件说明信息
{
fileMemo = item.getString("GBK");
}
else
{ //取得上传文件信息
fileName = (String)item.getName();
try{
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
fileName = fileName.substring(fileName.lastIndexOf("/")+1);
}catch(Exception e){
System.out.println(e);
}
fileSize = item.getSize();
tempItem = item;
}
if(temp == 2 && fileSize != 0)
{ //每两个iter存储一个上传文件
//得到info_title_id
String SQL_ID="select S_INFO_UPLOAD.nextval as seqid from dual";
try {
java.sql.Statement stmt = con.createStatement();
java.sql.ResultSet rst= stmt.executeQuery(SQL_ID);
while(rst.next())
{
dinfo_upload_id = rst.getInt("seqid");
}
}catch(SQLException e1){
return;
}
//取得文件扩展名
try{
saveName = fileName.substring(fileName.lastIndexOf("."));
}catch(Exception exc){
saveName = "";
}
filePath = sitePhysicalPath + saveDir + Integer.toString(dinfo_upload_id) + saveName;
//存储文件
java.io.File uploadFile = new java.io.File(filePath);
tempItem.write(uploadFile);
/*try{
FileOutputStream fos = new FileOutputStream(filePath);
InputStream is = tempItem.getInputStream();
byte[] b = new byte[1024];
int nRead;
long per = 0;
double percent = 0;
while((nRead = is.read(b, 0, 1024))>0){
fos.write(b, 0, nRead);
per += nRead;
percent = (double)per/fileSize;
session.setAttribute("percent",Double.toString(percent).substring(2,4));
session.setAttribute("filename",fileName);
}
is.close();
fos.close();
}catch(Exception e){
System.out.println(e);
}*/
savePath = saveDir + Integer.toString(dinfo_upload_id) + saveName;
/*/存储数据库
String sql = " INSERT INTO info_upload (info_upload_id,sys_user_id,file_name,file_memo,file_size,file_path,utime,deleted) "
+ " VALUES( " + Integer.toString(dinfo_upload_id) + "," + sys_user_id + ",'" + fileName + "','" + fileMemo + "'," + fileSize + ",'" + savePath + "', SYSDATE , 0 )" ;
sqlcmd cmd = new sqlcmd(con,sql);
*/
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");
}
temp = 0;
}
else if (temp == 2 && fileSize == 0) {temp = 0;}
}
//session.setAttribute("percent","ok");
}catch(Exception ex){
System.out.println(ex);
}
response.sendRedirect("list.jsp");
%>
//upload_jspSmart.jsp
<%@ include file = "../../backgeneral.jsp"%>
<%@ page language="java" import="java.util.*,java.sql.*,java.io.*"%>
<%@ page language="java" import="com.jspsmart.upload.*"%>
<%@ page language="java" import="com.ges.hbgov.*"%>
<jsp:useBean id="userInfo" scope="session" class="com.ges.hbgov.UserInfo"/>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
//System.out.println("page=" + (String)session.getAttribute("SYS_USER_ID"));
if(!userInfo.Request(request)){
%>
<script language=javascript>
function relogin() {
this.parent.location.href="../../login.jsp";
}
relogin();
</script>
<%
}
%>
<%
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){
}
response.sendRedirect("list.jsp");
%>
发表评论
-
JMS
2009-01-15 10:21 905JMS分为两个部分,一部分是应用程序接口,用于编写发送和接收 ... -
Jsp环境配置
2004-06-23 14:02 683第一部分 JAVA环境安装1.目前J2SDK的最新版本是1.4 ... -
jspSmartUpload
2004-06-23 14:16 612//========upload.html========== ... -
第十讲 JSP和Servlet
2004-06-23 17:09 75910.1 Servlet的概念、配置 ... -
第三篇:Servlet入门篇
2004-06-24 07:00 602严重警告:知道Servlet的人不要往下看<o:p> ... -
第五篇:Struts小试牛刀篇
2004-06-24 07:03 693严重警告:如果你跳过了 ... -
Struts,MVC 的实现
2004-06-24 18:43 821简介小学生也可以在因 ... -
Struts简单介绍
2004-06-24 18:44 874Struts是采用Java Servlet/JavaServe ... -
Struts的体系结构
2004-06-24 18:45 807Struts的体系结构(Struts Framework Ar ... -
Jakarta Struts的七大实战心法
2004-06-24 18:48 618编者按:当作者 Chuck Cav ... -
JavaBean使用技巧
2004-06-28 15:16 622虽然你可以把大段 ... -
getParameterValues用法
2004-07-19 22:26 780<form name="checkform&q ... -
HttpSessionListener统计在线人数
2004-08-31 22:01 1273/** * 编写以下SessionCounter.java * ... -
JavaBean 设置关联属性
2004-09-28 15:40 640在一个Bean中设置关联属 ... -
jspSmartUpload上传组件
2004-09-28 15:46 695一、安装篇 jspSmartUpload是由www.js ... -
日前和时间的操作
2004-09-29 20:52 637一、JAVA中日期的获取、设置和格式化1)JAVA提供了3个日 ... -
常用的分页函数
2004-10-04 13:47 572方法大致有三种: 1:)用next()方法:(最通用的方法 ... -
用Javamail写的邮件接收程序
2004-10-05 08:59 787package coffeecatwebmail;import ... -
JavaBean用户化
2004-10-05 09:05 633JavaBean开发者可以给一个Bean添加用户化器(Cust ... -
JavaBean的属性
2004-10-05 09:06 631JavaBean的属性与一般Java程序中所指的属性,或者说与 ...
相关推荐
### 彻底搞定Java文件上传:jspsmartupload、commonupload与orellay对比解析 在Java开发领域中,文件上传一直是备受关注的功能之一。针对这一需求,开发者们通常会选用几种较为流行的库来实现这一功能,其中包括较...
上载文件.轻松搞定.java Servlet上传文件.
姚云飞先生的大作《彻底搞定C指针》是互联网上中文C/C++界内为数不多的专门阐述C指针问题的优秀文献资源之一。 正如书名所示,对于那些学习了C基础知识却始终对C指针不得要领的读者,或者那些已经长期被C指针困扰的...
《彻底搞定C指针》是一本专为C语言学习者准备的深度指南,尤其是针对C指针这一核心概念。本书的完全版与修订增补版更是在原有的基础上进行了完善和加强,旨在帮助读者全面理解并熟练掌握C语言中的指针操作。 C语言...
### JAVA课堂笔记知识点详解 #### 一、Java简介与历史沿革 - **Java起源与发展:** Java由Sun Microsystems公司于1991年启动的Green项目演变而来,最初目标是设计一种能够通过电子邮件控制家电的编程语言。项目...
uniapp前端单文件上传JAVA后台接收实现(亲测),还有单文件上传亲测哦,可以都看看,研究了一天,终于搞定,支持原创
7天零基础搞定java开发,深刻体会面向对象,自己开发游戏引擎--教材版 7天零基础搞定java开发,深刻体会面向对象,自己开发游戏引擎--教材版 7天零基础搞定java开发,深刻体会面向对象,自己开发游戏引擎--教材版 7天零...
本文将深入探讨“彻底搞定C指针”的主题,帮助你全面掌握这一关键概念。 一、指针的概念 C语言中的指针是一种特殊的变量,它存储的是内存地址,而不是数据本身。通过指针,我们可以间接访问和修改内存中的数据。...
### Java调用DLL文件中的函数 #### 知识点概览 本文将详细介绍如何在Java环境中调用DLL(动态链接库)文件中的函数,并通过一个具体的示例来演示这一过程。主要内容包括: - Java Native Access (JNA) 库的介绍与...
jdk 环境变量 JAVA_HOME 批处理文件 双击搞定 最多只需修改个JAVA-HOME,其他的classpath path之类的bat文件搞定
运用apache的fileupload库实现文件上传,运用jxl分析导入的excel数据。 只需在现有页面上添加一个“导入”按钮就可实现excel导入数据库的功能,点击“导入”按钮,选择要上传的文件后会立即开始上传。 采用iframe的...
根据给定的文件标题、描述、标签以及部分内容,我们可以从中提炼出与Java编程相关的知识点,具体如下: ### 标题:“23天轻松搞定Java” 该标题表明这是一份关于在23天内掌握Java基础知识的学习资料。它暗示了这份...
### JAVA基础学习指南:《60天搞定JAVA》概览 #### 一、书籍简介 《60天搞定JAVA》是一本旨在帮助读者快速掌握Java编程语言的实用教材。本书由Richard F. Raposa撰写,并由Wiley Publishing, Inc.出版。通过这本书...
3. **平台无关性**:Java程序编译成字节码(.class文件),可以运行在任何支持Java虚拟机(JVM)的平台上。 4. **安全性**:Java提供了许多安全特性,包括沙箱机制等,能够有效防止恶意代码的执行。 5. **性能**:...
搞定JAVA2EE源代码 书本代码,为了不坑大家积分,其余部分上传到了我的网盘http://pan.baidu.com/s/1kT5LgSv http://pan.baidu.com/s/1sjQ7EMD http://pan.baidu.com/s/1dDxPRw9 http://pan.baidu.com/s/1sjO5MtZ