之前用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`,开发者可以方便地在Java Web应用中实现文件上传功能,而无需关注底层的HTTP协议细节。这个组件提供了丰富的API,支持各种自定义选项,例如内存阈值、临时文件存储位置等,使得文件...
结合这两个库,开发者可以轻松实现文件上传功能,包括验证文件类型、大小,处理多个文件上传,以及将上传的文件安全地保存到服务器的指定位置。在实际应用中,为了保证安全性,还需要注意防止恶意文件上传和DDoS攻击...
接下来我们将根据提供的代码示例来详细了解如何使用`commons-fileupload`实现文件上传功能。 1. **前端表单设计**: - 创建一个HTML表单,用于收集用户上传的文件。 - 表单的`method`属性设置为`POST`,`enctype`...
【描述】:此源码实例主要展示了如何将Apache Commons FileUpload与JSP结合,实现在网页上进行文件上传的功能。文档中不仅包含了源代码,还提供了一步步的教程,旨在帮助开发者快速理解和实施文件上传逻辑。 【标签...
6. **安全性考虑**:在使用`commons-fileupload`进行文件上传时,需要考虑安全性问题,比如防止恶意文件上传、限制文件大小和类型、以及对上传文件的路径安全控制,防止路径遍历攻击。 7. **与其他库的集成**:`...
5. **多文件上传**:Apache Commons FileUpload支持单个文件和多个文件的上传,可以通过`<input type="file" multiple>`在HTML表单中实现。 在压缩包中,除了`commons-fileupload-1.3.3-bin`外,还包含了一个`...
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
"commons-fileupload实现jsp上传实例(源码)" 这个标题表明了我们讨论的主题是关于使用Apache Commons FileUpload库在JavaServer Pages (JSP)中实现文件上传的功能,并且提供了源代码作为参考。Apache Commons ...
使用Commons-Fileupload,你需要配置Servlet容器来解析多部分请求,并创建`DiskFileItemFactory`来处理临时文件存储,接着创建`FileUpload`实例进行文件解析。 在选择使用哪个组件时,应考虑项目需求和团队的熟悉...
这两个库常常一起使用,因为`commons-fileupload`在处理文件上传时,可能会依赖`commons-io`来执行一些底层的I/O操作。孤傲苍狼在他们的Demo中使用了这两个库,使得开发者能够方便地实现用户在Web应用中上传文件的...
本教程将详细讲解如何利用Apache Commons FileUpload库实现在JSP中实现多文件上传功能。Apache Commons FileUpload是一个强大的、灵活的工具,它允许开发者在Servlet环境中处理文件上传请求。 首先,我们需要在项目...
以下将详细介绍如何使用commons-fileupload组件实现文件上传和下载。 首先,你需要在项目中引入必要的依赖库。如【描述】中所述,需要导入`javacommons-fileupload-1.2.1.jar`和`commons-io-1.4.jar`两个文件,这两...
"commons-fileupload"是Apache Commons项目中的一个子项目,专门用于处理JSP和Servlet应用程序中的文件上传功能。在Web开发中,尤其是用户需要上传图片、文档等文件时,这个组件显得尤为重要。它提供了简单易用的API...
库的核心类包括`FileItem`,用于表示上传的单一文件或表单字段,以及`FileUpload`,用于解析请求并创建`FileItem`实例。此外,它还支持设置内存阈值和临时文件存储路径,以优化大文件上传的处理。 `commons-io-...
描述中提到"jsp上传组件包含commons-fileupload.jar和commons-io.jar",这意味着在JSP(JavaServer Pages)环境中,为了实现文件上传功能,开发者通常会引用这两个JAR文件。Apache Commons FileUpload处理文件上传的...
总的来说,Apache Commons FileUpload库是Java Web开发中不可或缺的工具,它极大地简化了文件上传功能的实现,让开发者可以更专注于业务逻辑的开发,而不是底层的细节处理。通过熟练掌握这个库,开发者能够创建更...
在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...
在这个场景中,"SmartUpload.jar" 和 "commons-fileupload-1.1.1.jar" 是两个关键的Java库,它们极大地简化了在JSP(JavaServer Pages)中实现文件上传的过程。 首先,我们来详细了解这两个库: 1. **SmartUpload....