锁定老帖子 主题:使用FileUpload组件上传文件
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-31
文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。 common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。 新建一个servlet: Upload.java用于文件上传: java 代码
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码: java 代码
如果要在配置文件中读取指定的上传文件夹,可以在init()方法中执行: java 代码
编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。 xml 代码
配置好servlet后,启动tomcat,写一个简单的jsp测试: jsp 代码
注意:action="fileupload"其中fileupload是配置servlet时指定的url-pattern。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-01
我前一段时间也用这个组件做了一个例子,上传最大能达到250m,响应时间设成3min,速度特别慢,下载超过20m就报内存溢出。大家是怎么解决的。我的环境是mysql+tomcat5.028,内存1G.
|
|
返回顶楼 | |
发表时间:2007-04-01
别人的文章也是受法律保护滴...
|
|
返回顶楼 | |
发表时间:2007-04-02
不错的,我以前都是用spring的利ultipartFile实现文件上传(http://www.iteye.com/my_topic/51272)的,好像还不支持多文件上传,又学会一种方法
|
|
返回顶楼 | |
发表时间:2007-04-02
linxi1105 写道 我前一段时间也用这个组件做了一个例子,上传最大能达到250m,响应时间设成3min,速度特别慢,下载超过20m就报内存溢出。大家是怎么解决的。我的环境是mysql+tomcat5.028,内存1G.
我测试上传500M的文件都没有问题。 如果你上传20M内存溢出的话,很有可能是你把上传的文件全部读入到内存中。应该使用流。 另外有一个ahxu-commons-fileuploadex-beta2.jar的组件可以实现显示上传进度。不过只支持commons-fileupload-1.0.jar。 |
|
返回顶楼 | |
发表时间:2007-04-02
测试250m的时候速度很慢,而且设置的响应时间也很长。是不是我的方法有问题?或者机器配置太低了。硬件:1内存,AMD 64*2 1.6GHZ
在下载的时候我直接用select 大文本字段 from tablename where...,就在这里报出内存溢出。 |
|
返回顶楼 | |
发表时间:2007-04-02
我传过1.8g没有问题。不过费了好几个小时
html最大支持2g,用post方法 |
|
返回顶楼 | |
发表时间:2007-04-03
我最近也做了一个,但是一些功能进行扩展,碰到了一些问题。比如,我的存储的文件夹是每天一个,比如今天的存储目录可能是c:/upload/example/20070403/,明天可能就是:/upload/example/20070404/,这个到没啥,问题是还有个需求,就是我的存储随着不同的应用目录也不一样,比如我有个配置文件类似于下面的:
<app> <appid>1</appid> <appcode>example</appcode> <appfilepath>example</appfilepath> </app> <app> <appid>2</appid> <appcode>example2</appcode> <appfilepath>example2</appfilepath> </app> 也就是要求可以动态配置的,问题的在于,对于接受multipart/form-data数据的servlet,怎么也无法获取其他的非这种类型的参数,比如: <form action="fileupload" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file" /> <input type="submit" name="submit" value="上传" /> <input type="hidden" name="app" value="1"> </form> 这个app就很难获得。 |
|
返回顶楼 | |
发表时间:2007-04-03
linxi1105 写道 测试250m的时候速度很慢,而且设置的响应时间也很长。是不是我的方法有问题?或者机器配置太低了。硬件:1内存,AMD 64*2 1.6GHZ
在下载的时候我直接用select 大文本字段 from tablename where...,就在这里报出内存溢出。 这里内存溢出肯定不关下载的事。 如果你直接将大文件从数据库直接取到内存中,那内存肯定受不了。 当然可以加大web服务器的最大内存,不过不是好方法。最好的方法应该是用流的形式获取。 |
|
返回顶楼 | |
发表时间:2007-04-03
好像很多上传下载组件都是把资源全部读到内存再flush
不内存溢出才怪 |
|
返回顶楼 | |