社区
Apache
帖子详情
有没有知道用jsp上传组件上传文件时,允许所传文件的最大值是多少??
wmm88257789
2009-06-26 10:34:13
有没有知道用jsp上传组件上传文件时,允许所传文件的最大值是多少?
我想把这个限制修改为200M,应该在那里修改呢?
在smartupload.java中有对setMaxFileSize()方法的定义,但是要如何修改才能改为200M呢?
...全文
48
1
打赏
收藏
有没有知道用jsp上传组件上传文件时,允许所传文件的最大值是多少??
有没有知道用jsp上传组件上传文件时,允许所传文件的最大值是多少? 我想把这个限制修改为200M,应该在那里修改呢? 在smartupload.java中有对setMaxFileSize()方法的定义,但是要如何修改才能改为200M呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiage0432
2012-03-25
打赏
举报
回复
setMaxFileSize(20000000);
java结合
jsp
写的
上传
文件
代码
package action; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final long MAX_SIZE = 300 * 1024 * 1024;// 设置
上传
文件
最大值
//
允许
上传
的
文件
格式的列表 final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt", "doc", "mp3", "wma", "m4a", "rar", "zip" }; response.setContentType("text/html"); // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题 response.setCharacterEncoding("UTF-8"); // 实例化一个硬盘
文件
工厂,用来配置
上传
组件
ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置
上传
文件
时
用于临
时
存放
文件
的内存大小,这里是4K.多于的部分将临
时
存在硬盘 dfif.setRepository(new File(request.getRealPath("/") + "ImagesUploadTemp"));// 设置存放临
时
文件
的目录,web根目录下的ImagesUploadTemp目录 // 用以上工厂实例化
上传
组件
ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大
上传
大小 sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter(); // 从request得到所有
上传
域的列表 List fileList = null; try { fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理
文件
尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("
文件
尺寸超过规定大小:" + MAX_SIZE + "字节
"); out .println("
jsp\" target=\"_top\">返回
"); return; } e.printStackTrace(); } // 没有
文件
上传
if (fileList == null || fileList.size() == 0) { out.println("请选择
上传
文件
"); out.println("
jsp\" target=\"_top\">返回
"); return; } // 得到所有
上传
的
文件
Iterator fileItr = fileList.iterator(); // 循环处理所有
文件
while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前
文件
fileItem = (FileItem) fileItr.next(); // 忽略简单form字段而不是
上传
域的
文件
域(
等) if (fileItem == null || fileItem.isFormField()) { continue; } // 得到
文件
的完整路径 path = fileItem.getName(); // 得到
文件
的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { out.println("请选择
上传
文件
"); out .println("
jsp\" target=\"_top\">返回
"); return; } // 得到去除路径的
文件
名 String t_name = path.substring(path.lastIndexOf("\\") + 1); System.out.println(t_name); // 得到
文件
的扩展名(无扩展名
时
将得到全名) String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1); System.out.println(t_ext); // 拒绝接受规定
文件
格式之外的
文件
类型 int allowFlag = 0; int allowedExtCount = allowedExt.length; for (; allowFlag < allowedExtCount; allowFlag++) { if (allowedExt[allowFlag].equals(t_ext)) break; } if (allowFlag == allowedExtCount) { out.println("请
上传
以下类型的
文件
"); for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++) out.println("*." + allowedExt[allowFlag] + " "); out .println("
jsp\" target=\"_top\">返回
"); return; } long now = System.currentTimeMillis(); // 根据系统
时
间生成
上传
后保存的
文件
名 String prefix = String.valueOf(now); // 保存的最终
文件
完整路径,保存在web根目录下的ImagesUploaded目录下 String u_name = request.getRealPath("/") + "ImagesUploaded/" + prefix + "." + t_ext; //String filename = prefix + "." + t_ext; //根据原
文件
名保存
文件
String filename=t_name; try { // 保存
文件
到C:\\request.getRealPath("/")目录下 fileItem.write(new File(request.getRealPath("/") + filename)); System.out.println(filename); out.println("
文件
上传
成功. 已保存为: " + t_name + "
文件
大小: " + size + "字节
"); out .println("
jsp\" target=\"_top\">继续
上传
"); } catch (Exception e) { e.printStackTrace(); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
Jsp
文件
上传
下载(工具类源码)
commons-fileupload-1.2.1实现
文件
上传
需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.
jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
文件
上传
FileUploadServlet.java import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final long MAX_SIZE = 300 * 1024 * 1024;// 设置
上传
文件
最大值
//
允许
上传
的
文件
格式的列表 final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt", "doc", "mp3", "wma", "m4a", "rar", "zip" }; response.setContentType("text/html"); // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题 response.setCharacterEncoding("UTF-8"); // 实例化一个硬盘
文件
工厂,用来配置
上传
组件
ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置
上传
文件
时
用于临
时
存放
文件
的内存大小,这里是4K.多于的部分将临
时
存在硬盘 dfif.setRepository(new File(request.getRealPath("/") + "ImagesUploadTemp"));// 设置存放临
时
文件
的目录,web根目录下的ImagesUploadTemp目录 // 用以上工厂实例化
上传
组件
ServletFileUpload sfu = new ServletFileUpload(dfif); // 设置最大
上传
大小 sfu.setSizeMax(MAX_SIZE); PrintWriter out = response.getWriter(); // 从request得到所有
上传
域的列表 List fileList = null; try { fileList = sfu.parseRequest(request); } catch (FileUploadException e) {// 处理
文件
尺寸过大异常 if (e instanceof SizeLimitExceededException) { out.println("
文件
尺寸超过规定大小:" + MAX_SIZE + "字节
"); out .println("
jsp\" target=\"_top\">返回
"); return; } e.printStackTrace(); } // 没有
文件
上传
if (fileList == null || fileList.size() == 0) { out.println("请选择
上传
文件
"); out.println("
jsp\" target=\"_top\">返回
"); return; } // 得到所有
上传
的
文件
Iterator fileItr = fileList.iterator(); // 循环处理所有
文件
while (fileItr.hasNext()) { FileItem fileItem = null; String path = null; long size = 0; // 得到当前
文件
fileItem = (FileItem) fileItr.next(); // 忽略简单form字段而不是
上传
域的
文件
域(
等) if (fileItem == null || fileItem.isFormField()) { continue; } // 得到
文件
的完整路径 path = fileItem.getName(); // 得到
文件
的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { out.println("请选择
上传
文件
"); out .println("
jsp\" target=\"_top\">返回
"); return; } // 得到去除路径的
文件
名 String t_name = path.substring(path.lastIndexOf("\\") + 1); System.out.println(t_name); // 得到
文件
的扩展名(无扩展名
时
将得到全名) String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1); // 拒绝接受规定
文件
格式之外的
文件
类型 int allowFlag = 0; int allowedExtCount = allowedExt.length; for (; allowFlag < allowedExtCount; allowFlag++) { if (allowedExt[allowFlag].equals(t_ext)) break; } if (allowFlag == allowedExtCount) { out.println("请
上传
以下类型的
文件
"); for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++) out.println("*." + allowedExt[allowFlag] + " "); out .println("
jsp\" target=\"_top\">返回
"); return; } long now = System.currentTimeMillis(); // 根据系统
时
间生成
上传
后保存的
文件
名 String prefix = String.valueOf(now); // 保存的最终
文件
完整路径,保存在web根目录下的ImagesUploaded目录下 String u_name = request.getRealPath("/") + "ImagesUploaded/" + prefix + "." + t_ext; //String filename = prefix + "." + t_ext; //根据原
文件
名保存
文件
String filename=t_name; try { // 保存
文件
到C:\\upload目录下 fileItem.write(new File("D:\\upload\\" + filename)); System.out.println(filename); out.println("
文件
上传
成功. 已保存为: " + t_name + "
文件
大小: " + size + "字节
"); out .println("
jsp\" target=\"_top\">继续
上传
"); } catch (Exception e) { e.printStackTrace(); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
jsp
smart.jar包及帮助文档
㈠ File类 这个类包装了一个
上传
文件
的所有信息。通过它,可以得到
上传
文件
的
文件
名、
文件
大小、扩展名、
文件
数据等信息。 File类主要提供以下方法: 1、saveAs作用:将
文件
换名另存。 原型: public void saveAs(java.lang.String destFilePathName) 或 public void saveAs(java.lang.String destFilePathName, int optionSaveAs) 其中,destFilePathName是另存的
文件
名,optionSaveAs是另存的选项,该选项有三个值,分别是SAVEAS_PHYSICAL, SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系统的根目录为
文件
根目录另存
文件
, SAVEAS_VIRTUAL表明以Web应用程序的根目录为
文件
根目录另存
文件
,SAVEAS_AUTO则表示让
组件
决定,当Web应用程序的根目录存在另存
文件
的目录
时
,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL。 例如,saveAs ("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的
文件
名实际是c:\ upload\sample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用程序的根目录是webapps/
jsp
smartupload,则另存的
文件
名实际是 webapps/
jsp
smartupload/upload/sample.zip。saveAs("/upload/sample.zip", SAVEAS_AUTO)执行
时
若Web应用程序根目录下存在upload目录,则其效果同saveAs("/upload/sample.zip", SAVEAS_VIRTUAL),否则同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。 建议:对于Web程序的开发来说,最好使用SAVEAS_VIRTUAL,以便移植。 2、isMissing 作用:这个方法用于判断用户是否选择了
文件
,也即对应的表单项是否有值。选择了
文件
时
,它返回false。未选
文件
时
,它返回true。 原型:public boolean isMissing() 3、getFieldName 作用:取HTML表单中对应于此
上传
文件
的表单项的名字。 原型:public String getFieldName() 4、getFileName 作用:取
文件
名(不含目录信息) 原型:public String getFileName() 5、getFilePathName 作用:取
文件
全名(带目录) 原型:public String getFilePathName 6、getFileExt 作用:取
文件
扩展名(后缀) 原型:public String getFileExt() 7、getSize 作用:取
文件
长度(以字节计) 原型:public int getSize() 8、getBinaryData 作用:取
文件
数据中指定位移处的一个字节,用于检测
文件
等处理。 原型:public byte getBinaryData(int index)。其中,index表示位移,其值在0到getSize()-1之间。 ㈡ Files类 这个类表示所有
上传
文件
的集合,通过它可以得到
上传
文件
的数目、大小等信息。有以下方法: 1、getCount 作用:取得
上传
文件
的数目。 原型:public int getCount() 2、getFile 作用:取得指定位移处的
文件
对象File(这是com.
jsp
smart.upload.File,不是java.io.File,注意区分)。 原型:public File getFile(int index)。其中,index为指定位移,其值在0到getCount()-1之间。 3、getSize 作用:取得
上传
文件
的总长度,可用于限制一次性
上传
的数据量大小。 原型:public long getSize() 4、getCollection 作用:将所有
上传
文件
对象以Collection的形式返回,以便其它应用程序引用,浏览
上传
文件
信息。 原型:public Collection getCollection() 5、getEnumeration 作用:将所有
上传
文件
对象以Enumeration(枚举)的形式返回,以便其它应用程序浏览
上传
文件
信息。 原型:public Enumeration getEnumeration() ㈢ Request类 这个类的功能等同于
JSP
内置的对象request。只所以提供这个类,是因为对于
文件
上传
表单,通过request对象无法获得表单项的值,必须通过
jsp
SmartUpload
组件
提供的Request对象来获取。该类提供如下方法: 1、getParameter 作用:获取指定参数之值。当参数不存在
时
,返回值为null。 原型:public String getParameter(String name)。其中,name为参数的名字。 2、getParameterValues 作用:当一个参数可以有多个值
时
,用此方法来取其值。它返回的是一个字符串数组。当参数不存在
时
,返回值为null。 原型:public String[] getParameterValues(String name)。其中,name为参数的名字。 3、getParameterNames 作用:取得Request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象。 原型:public Enumeration getParameterNames() ㈣ SmartUpload类这个类完成
上传
下载工作。 A.
上传
与下载共用的方法: 只有一个:initialize。 作用:执行
上传
下载的初始化工作,必须第一个执行。 原型:有多个,主要使用下面这个: public final void initialize(javax.servlet.
jsp
.PageContext pageContext) 其中,pageContext为
JSP
页面内置对象(页面上下文)。 B.
上传
文件
使用的方法: 1、upload 作用:
上传
文件
数据。对于
上传
操作,第一步执行initialize方法,第二步就要执行这个方法。 原型:public void upload() 2、save 作用:将全部
上传
文件
保存到指定目录下,并返回保存的
文件
个数。 原型:public int save(String destPathName) 和public int save(String destPathName,int option) 其中,destPathName为
文件
保存目录,option为保存选项,它有三个值,分别是SAVE_PHYSICAL,SAVE_VIRTUAL和 SAVE_AUTO。(同File类的saveAs方法的选项之值类似)SAVE_PHYSICAL指示
组件
将
文件
保存到以操作系统根目录为
文件
根目录的目录下,SAVE_VIRTUAL指示
组件
将
文件
保存到以Web应用程序根目录为
文件
根目录的目录下,而SAVE_AUTO则表示由
组件
自动选择。 注:save(destPathName)作用等同于save(destPathName,SAVE_AUTO)。 3、getSize 作用:取
上传
文件
数据的总长度 原型:public int getSize() 4、getFiles 作用:取全部
上传
文件
,以Files对象形式返回,可以利用Files类的操作方法来获得
上传
文件
的数目等信息。 原型:public Files getFiles() 5、getRequest 作用:取得Request对象,以便由此对象获得
上传
表单参数之值。 原型:public Request getRequest() 6、setAllowedFilesList 作用:设定
允许
上传
带有指定扩展名的
文件
,当
上传
过程中有
文件
名不
允许
时
,
组件
将抛出异常。 原型:public void setAllowedFilesList(String allowedFilesList) 其中,allowedFilesList为
允许
上传
的
文件
扩展名列表,各个扩展名之间以逗号分隔。如果想
允许
上传
那些没有扩展名的
文件
,可以用两个逗号表示。例如:setAllowedFilesList("doc,txt,,")将
允许
上传
带doc和txt扩展名的
文件
以及没有扩展名的
文件
。 7、setDeniedFilesList 作用:用于限制
上传
那些带有指定扩展名的
文件
。若有
文件
扩展名被限制,则
上传
时
组件
将抛出异常。 原型:public void setDeniedFilesList(String deniedFilesList) 其中,deniedFilesList为禁止
上传
的
文件
扩展名列表,各个扩展名之间以逗号分隔。如果想禁止
上传
那些没有扩展名的
文件
,可以用两个逗号来表示。例如:setDeniedFilesList("exe,bat,,")将禁止
上传
带exe和bat扩展名的
文件
以及没有扩展名的
文件
。 8、setMaxFileSize 作用:设定每个
文件
允许
上传
的最大长度。 原型:public void setMaxFileSize(long maxFileSize) 其中,maxFileSize为为每个
文件
允许
上传
的最大长度,当
文件
超出此长度
时
,将不被
上传
。 9、setTotalMaxFileSize 作用:设定
允许
上传
的
文件
的总长度,用于限制一次性
上传
的数据量大小。 原型:public void setTotalMaxFileSize(long totalMaxFileSize) 其中,totalMaxFileSize为
允许
上传
的
文件
的总长度。 C.下载
文件
常用的方法 1、setContentDisposition 作用:将数据追加到MIME
文件
头的CONTENT-DISPOSITION域。
jsp
SmartUpload
组件
会在返回下载的信息
时
自动填写MIME
文件
头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,请用此方法。 原型:public void setContentDisposition(String contentDisposition) 其中,contentDisposition为要添加的数据。如果contentDisposition为null,则
组件
将自动添加 "attachment;",以表明将下载的
文件
作为附件,结果是IE浏览器将会提示另存
文件
,而不是自动打开这个
文件
(IE浏览器一般根据下载的
文件
扩展名决定执行什么操作,扩展名为doc的将用word程序打开,扩展名为pdf的将用acrobat程序打开,等等)。 2、downloadFile 作用:下载
文件
。 原型:共有以下三个原型可用,第一个最常用,后两个用于特殊情况下的
文件
下载(如更改内容类型,更改另存的
文件
名)。 ① public void downloadFile(String sourceFilePathName) 其中,sourceFilePathName为要下载的
文件
名(带目录的
文件
全名) ② public void downloadFile(String sourceFilePathName,String contentType) 其中,sourceFilePathName为要下载的
文件
名(带目录的
文件
全名),contentType为内容类型(MIME格式的
文件
类型信息,可被浏览器识别)。 ③ public void downloadFile(String sourceFilePathName,String contentType,String destFileName) 其中,sourceFilePathName为要下载的
文件
名(带目录的
文件
全名),contentType为内容类型(MIME格式的
文件
类型信息,可被浏览器识别),destFileName为下载后默认的另存
文件
名。
常用
JSP
文件
上传
,下载的一些方法
原理是在Actionform中定义一个FormFile类型的属性file,这个类型是struts所提供的包中的对象——“org.apache.struts.upload.FormFile”,并在
jsp
中加入html:file标签,当提交表单后,该标签会把用户所选择
上传
的
文件
的放入file中。
文件
上传
在web应用中非常普遍,要在
jsp
环境中实现
文件
上传
功能是非常容易的,因为网上有许多用java开发的
文件
上传
组件
,下面我介绍几种有关
文件
上传
组件
。能将
文件
上传
到数据库中,也能将数据库中的数据下载下来。
JSP
实用程序之简易
文件
上传
组件
文件
上传
,包括但不限于图片
上传
,是 Web 开发中司空见惯的场景,相信各位或多或少都曾写过这方面相关的代码。Java 界若说
文件
上传
,则言必称 Apache Commons FileUpload,论必及 SmartUpload。更甚者,Servlet 3.0 将
文件
上传
列为 JSR 标准,使得通过几个注解就可以在 Servlet 中配置
上传
,无须依赖任何
组件
。使用第三方
组件
或 Servlet 自带
组件
固然强大,但只靠
JSP
亦能完成任务,且短小而精悍,岂不美哉?
Apache
24,923
社区成员
16,548
社区内容
发帖
与我相关
我的任务
Apache
Web 开发 Apache
复制链接
扫一扫
分享
社区描述
Web 开发 Apache
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章