之前用smartupload上传文件,发现处理较大文件时会内存溢出,在网上了解到可修改系统设置来解决此问题:
(1). 在windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m
(2). 修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"
但还是不太好使,后来改成了commons-fileupload
供大家参考,共同学习!
以下是commons-fileupload实现JSP上传文件的主要代码:
<%@ page language="java" pageEncoding="GBK"%>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.List" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.io.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.FileUploadException" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>上传文件操作</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
try{
String fileType = request.getParameter("fileType"); //获取页面提交的文件 指定文件夹
String fileName = request.getParameter("fileName"); //文件名
fileName=new String(fileName.getBytes("ISO-8859-1"),"GBK");
String fileNameStr = new String(fileName.getBytes("GBK"), "ISO-8859-1");
//System.out.println("fileName"+fileName);
//System.out.println("fileNameStr"+fileNameStr);
boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查表单中是否包含文件
if(isMultipart){
FileItemFactory factory = new DiskFileItemFactory();
//factory.setSizeThreshold(yourMaxMemorySize); 此处可设置使用的内存最大值
//factory.setRepository(yourTempDirectory); 文件临时目录
ServletFileUpload upload = new ServletFileUpload(factory);
long maxsize = 80*1024*1024;
upload.setSizeMax(maxsize);//允许的最大文件尺寸
java.util.List itemss = new ArrayList();
itemss = upload.parseRequest(request);
String u_name = "E:/founder_erp_upload/"+ fileType + "/" + fileName;//保存到文件目录
//System.out.println("===================1======================="+itemss.size());
for(int i=0;i<itemss.size();i++){
FileItem fi = (FileItem)itemss.get(i);
//fi.write(new File(u_name));
if(fi.isFormField()){//如果是表单字段
//System.out.println("==================2=======================");
}else{//如果是文件
DiskFileItem dfi = (DiskFileItem)fi;
//if(!dfi.getName().trim().equals("")){
//getName()返回文件名称,如果是空字符串,说明没有选择文件。
dfi.write(new File(u_name));
//System.out.println("==================3=======================");
//}
}
}
}
// 另存到操作系统的根目录为文件根目录的目录下
//file.saveAs("E://upload//"+ fileType + "//" + fileName +"." + file.getFileExt() ,su.SAVE_PHYSICAL);
}catch(Exception e){
e.printStackTrace();
}finally {
}
%>
<script type="text/javascript">
window.alert("上传成功!");
window.close();
</script>
</body>
</html>
分享到:
相关推荐
本人编写了一个名为《commons-fileupload实现jsp上传实例(教程)》的文档,此次上传资源为该文档对应的源代码。
一个简单的jsp上传实例,使用commons-fileupload实现。其代码已经上传在另外一个资源里。该文档也在附录中附了代码。
commons-fileupload实现jsp上传实例(源码),本源码在本机测试通过。
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
1、将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为 multipart/form-data。代码如下: <body> 上传图书课件 ...
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%> <!DOCTYPE ...
commons-fileupload-1.0上传组件使用实例,里面有代码和jar包, 复制,粘贴就可以使用
JSP Ajax无刷新上传文件实例,本程序实现Ajax功能的插件为Mootools,附有完整的JAVA源文件,上传文件时显示进度条,适时显示上传进度,所使用到的JAVA类:commons-io-1.2.jar、commons-fileupload-1.1.jar,已内附...
由于存储空间,对一般用户而言,就是用来操作存储文件的,所以这两天,特意看了一下windows下用servlet实现文件上传、下载和删除,下面是详细代码说明 上传: 用的是commons-fileupload-1.2.2.jar和commons-io-...
不错的例子!!!适合初学者学习,用的commons-fileupload组件,还有commons-io组件,这两个是依赖在一起的!!!!!
在myeclipse中加入这两个库文件,就能编写一个简单的文件上传实例!
commons-fileupload.jar 21.85 KB commons-lang.jar 62.48 KB commons-logging.jar 30.86 KB commons-validator.jar 45.77 KB jakarta-oro.jar 63.84 KB struts-bean.tld 8.66 KB struts-...
本文实例为大家分享了jsp servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下 上传: 需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar import java.io.File; import java.io....
3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 ...
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于...
3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 ...
3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 ...
3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 ...
文件上传是项目开发中最常见的功能。为了能上传文件,必须将表单的method设置为POST,...在2003年,Apache Software Foundation发布了开源的Commons FileUpload组件,其很快成为Servlet/JSP程序员上传文件的最佳选择。