`
harrison2010
  • 浏览: 108027 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

大家来讨论:apache下的FileUpload

阅读更多
如果用过apache写的FileUpload的话都知道,使用DiskFileUpload类的时候,需要去建立一个临时的目录。
我追踪过fileupload的源码,一直追踪到commons.io包下面的另一个IOUtils类。
我所了解过程应该是这样的,先将上传的文件放到临时目录下,然受在从临时目录里面copy到真正要上传的目录。

我的疑问是为什么要这么来做,完全可以一次行把要上传的东西传到目的目录不可以吗?
这样做的好处是什么那?

注:相信用过的人都知道,代码我就不贴上来,用代码说明问题总觉得不够理性
分享到:
评论
8 楼 geutopia 2008-11-17  
你把struts.properties不打进jar包不就可以了。直接放置到classes下不就完了。
7 楼 harrison2010 2008-11-17  
littledodo 写道

struts2因为用的也是FileUpload,所以在它的struts.properties里要指定
临时上传目录struts.multipart.saveDir=xxx
而src在打成jar包后就不能去改这个属性了  这样在部署的时候很不方便
不知道大家有什么好的办法可以灵活配置这个目录呢?

既然你要打成jar去部署的话,那么如何去配置当再次修改的时候你都需要去打包。这是必然的,无论是propertyies或者xml的配置文件。
我记得有这样一个方法,其实jar包,可以用rar压缩包格式打开,你仅仅需要修改里面的properties文件就可以了,关闭的时候他会提醒你需要保存到jar吗?你点需要就ok了啊
6 楼 littledodo 2008-11-15  
struts2因为用的也是FileUpload,所以在它的struts.properties里要指定
临时上传目录struts.multipart.saveDir=xxx
而src在打成jar包后就不能去改这个属性了  这样在部署的时候很不方便
不知道大家有什么好的办法可以灵活配置这个目录呢?
5 楼 harrison2010 2008-11-14  
wilsonxu 写道
Apache的FileUpload的处理按文件的大小划分:

2.灵活.在复制到目标地址之前,允许开发者按需去处理临时文件(比如是否覆盖同名文件).


其他观点均赞同,但是这样去判断不可以吧,都已经在在临时目录下了,再去判断重名有意义吗?应该是先去判断重名不重名吧
还有你说按需去处理临时文件,那个东西都被写死在apache upload里面了,如果真的想去处理,必须要改源码的吧
4 楼 wilsonxu 2008-11-14  
Apache的FileUpload的处理按文件的大小划分:
1. 小文件.直接通过内存上传即可.
2. 大文件.先上传到临时文件夹,再复制到目标地址.
3. 太大的文件,不允许上传.

对于#2,用的就是DiskFileItem.我想临时文件有以下几作用:
1.缓存.如果文件上传失败,或被迫中止,临时文件可以缓存已经上传数据.
2.灵活.在复制到目标地址之前,允许开发者按需去处理临时文件(比如是否覆盖同名文件).
3 楼 cyberblue 2008-11-14  
不愿意用临时文件就不要用叫Disk什么什么的那些类了。直接用FileItemStream.openStream(),获取流以后再自己写逻辑处理。
2 楼 harrison2010 2008-11-14  
taopian 写道
如果不设置临时硬盘buffer。
当高并发,并且上传大文件的时候,会造成OutOfMemoryError的。


设置了临时目录不还是会出现这样的情况,临时目录的并发高也不能承受的住吧
1 楼 taopian 2008-11-14  
如果不设置临时硬盘buffer。
当高并发,并且上传大文件的时候,会造成OutOfMemoryError的。

相关推荐

    org.apache.commons.fileupload

    标签 "java 文件上传" 明确了我们讨论的主题是Java环境下的文件上传技术。在Java Web开发中,当用户通过HTML表单提交包含文件的数据时,就需要用到文件上传功能。Apache Commons FileUpload为此提供了一套完善的API...

    commons-fileupload.jar

    描述中提到了"commons-fileupload-1.2.2.jar",这与标题相呼应,确认了我们讨论的是Apache Commons FileUpload的特定版本。此外,还提到了"commons-io-2.0.1.jar",这是一个与文件操作相关的库,它提供了各种I/O操作...

    commons-fileupload实现jsp上传实例(源码)

    "commons-fileupload实现jsp上传实例(源码)" 这个标题表明了我们讨论的主题是关于使用Apache Commons FileUpload库在JavaServer Pages (JSP)中实现文件上传的功能,并且提供了源代码作为参考。Apache Commons ...

    fileupload所需jar包

    标题中的"fileupload所需jar包"表明我们正在讨论与文件上传功能相关的Java库。在Web应用开发中,处理用户上传的文件是一项常见的需求,而Apache Commons FileUpload和Apache Commons IO是两个关键的Java库,它们提供...

    commons-fileupload-1.2.1

    Apache Commons FileUpload是一个Java库,专门用于处理HTTP...总的来说,Apache Commons FileUpload是Java Web开发中不可或缺的工具,它极大地简化了文件上传的处理,使得开发者能够更专注于业务逻辑,而非底层细节。

    fileupload-src

    标题 "fileupload-src" 暗示我们正在讨论一个与文件上传相关的开源项目源代码,很可能是Apache Commons FileUpload的源码。这个组件是Java Web应用程序处理multipart/form-data请求的标准库,这种请求类型通常用于...

    commons-fileupload.rar

    不过,由于这个文件不在我们的讨论范围内,我们主要关注的是`commons-fileupload.jar`,它是实现文件上传功能的关键组件。通过合理使用这个库,开发者可以构建更强大、更健壮的文件上传功能,同时避免了手动处理多...

    文件上传工具

    在本篇文章中,我们将重点讨论一个名为Apache FileUpload的Java库,它是实现文件上传的一种有效解决方案,尤其是在描述中提到的,它可以用作替代jspsmartupload的选项。 Apache FileUpload是Apache Commons项目的一...

    fileupload

    总的来说,`fileupload`主题涉及到了Struts框架下的文件上传功能,以及Apache Commons FileUpload和Commons IO两个核心库的使用。它们协同工作,使得在Java Web应用中实现文件上传变得相对简单和可靠。理解并熟练...

    FileUpload实现多文件上传与下载

    在Java Web应用中,我们可以使用Servlet API或者第三方库如Apache Commons FileUpload来处理这些文件。以下是一个简单的Servlet实现多文件上传的步骤: 1. **HTML表单设计**: 创建一个`...

    spring所需的基本jar包

    2. `commons-pool.jar`:Apache Commons Pool,这是Apache Commons项目中的一个对象池库,DBCP依赖于它来实现数据库连接池的功能。对象池可以有效地管理和重用对象,节省系统资源。 3. `commons-logging.jar`:...

    FileUpload

    为了处理这些问题,可以使用Apache Commons FileUpload库,它提供了更高级别的API来处理多部分请求。同时,对于大型文件,可以考虑分块上传或断点续传功能,以提高上传效率和用户体验。 总结一下,Java中的文件上传...

    使用commons-fileupload-1.2.2和jquery的progressbar实现的进度条

    本篇将讨论如何使用Apache Commons FileUpload 1.2.2库和jQuery的progressbar插件来实现这样的功能。 Apache Commons FileUpload是一个Java库,专门处理HTTP请求中的多部分形式数据,即通常用于上传文件的数据格式...

    fileupload控件及io包

    这涉及到更复杂的处理,如使用第三方库如Apache Commons FileUpload,它可以处理多部分请求并提供更灵活的配置选项。 总的来说,FileUpload控件与"I/O"包是实现文件上传功能的核心技术。理解它们的工作原理和如何...

    common-fileupload&common-io

    总的来说,`common-fileupload`和`common-io`为Java Web开发提供了强大的文件处理能力,使得开发者能够更专注于业务逻辑,而不是底层的I/O操作。这两个库的使用大大简化了文件上传和下载的实现,提高了代码的可维护...

    apache2模块autoindex应用扩展

    Apache2模块autoindex是Apache HTTP服务器的一个核心模块,它的主要功能是为用户提供一个可视化的目录索引,当用户访问一个没有默认索引文件(如index.html)的目录时,会显示该目录下的文件和子目录列表。...

    java上传文件用到的jar包

    1. **Apache Commons FileUpload**: Apache Commons FileUpload是Java中广泛使用的文件上传库,它提供了处理HTTP多部分请求的能力,这是上传文件的标准方式。要使用此库,你需要添加`commons-fileupload.jar`和`...

    jsp中的各种jar包

    17. **commons-fileupload.jar**:Apache Commons FileUpload,支持文件上传功能。 18. **commons-io.jar**:Apache Commons IO,提供了I/O操作的实用工具类。 19. **junit.jar**:JUnit测试框架,用于单元测试...

    利用Common-fileupload封装的文件上传组件...附上源码.

    这表明我们将讨论如何使用这个库来创建一个文件上传系统,并且提供有源码可供参考。通过`Common-fileupload`,我们可以实现用户在网页上选择文件后,将这些文件发送到服务器的功能。它处理了分块数据、内存与磁盘...

Global site tag (gtag.js) - Google Analytics