`

Smartupload和commons-fileupload介绍与比较

 
阅读更多

WEB文件上传可能是网站建设中最常用的功能之一,我在项目开发中几乎都需要实现文件上传功能.前段时间自己搜集了一些上传组件.这篇文章中将介绍这些组件的使用方法,并且比较各自的优劣.

一,smartupload组件.

我想只要做个文件上传的朋友都知道这个组件,我认识的人中使用最多的也是它!我刚到公司的时候,公司也使用的smartupload,这个组件上传相对较小的文件时是个不错的选择.下面给出个使用的例子:

  
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.jspsmart.upload.*" %>

<%
//实例化上载bean
SmartUpload mySmartUpload=new SmartUpload();
//初始化
mySmartUpload.initialize(pageContext);
//设置上载的最大值,注意:如果这里设置过大会出现问题!
mySmartUpload.setMaxFileSize(500 * 1024*1024);
//上载文件
mySmartUpload.upload();
//循环取得所有上载的文件
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
//取得上载的文件
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
if (!myFile.isMissing())
{
//取得上载的文件的文件名
String myFileName=myFile.getFileName();
//取得不带后缀的文件名
String suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
//取得后缀名
String ext= mySmartUpload.getFiles().getFile(0).getFileExt();
//取得文件的大小
int fileSize=myFile.getSize();
//保存路径
String aa=getServletContext().getRealPath("/")+"jsp//";
String trace=aa+myFileName;
//取得别的参数
String explain=(String)mySmartUpload.getRequest().getParameter("text");
String send=(String)mySmartUpload.getRequest().getParameter("send");
//将文件保存在服务器端
myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
%>


但是使用smartupload上传过大文件,或者多文件的时候可能出现CPU或内存占用过高的问题.并且:只有重新启动容器才能恢复正常!这正是我最后我放弃了使用smartupload的原因.

二,commons-fileupload组件

这个组件是我现在使用的组件,下载地址:http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.cgi,包内包含了API文档.

使用该组件的例子:

<%@ page language=“java”contentType=“text/html;charset=GBK”%>
<%@ page import=“java.util.*”%>
<%@ page import=“org.apache.commons.fileupload.*”%>
<html>
<head>
<title>文件上传</title>
</head>
<%
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(10000000);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath(“D://Tomcat5//TEMP”);
//开始读取上传信息
List fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
item.write(“D://UploadTest//”+ name);
}
}
%>

从上面的程序可以看出,该组件上传时候可以用了一个地方来存储临时文件,呆上传完成后直接把文件写过去.这样就不会占用过多的内存!而且该组件上传大文件的时候效率也不低哦!

在这两个的对比选择中,我选择了后者,因为我做的项目中经常上传大于10M的文件,用前者的时候服务器几乎被整崩溃.

不过,现在我已经不用这两种组件了,因为http方式传文件效率始终很低,我们现在使用的是web方式实现的ftp文件上传,我将在下篇文章中写我在项目中是如何实现的.

分享到:
评论

相关推荐

    java 上传 SmartUpload&commons-fileupload

    包含smartupload.jar jsmartcom_zh_CN.jar smartupload.chm commons-fileupload.jar

    commons-fileupload和smartupload实现文件上传

    里面包含了,Commons-fileupload和smartupload两种上传文件的代码实例。

    Smartupload_and_commons-fileupload.rar_smartupload

    Smartupload 和commons-fileupload功能比较

    SmartUpload.jar和commons-fileupload-1.1.1.jar

    jsp上传图片所需jar包,上传更方便快捷,与大家分享

    文件上传与下载用的jar包(commons-fileupload-1.2.1 commons-io-1.4 jspsmartupload jspsmart_zh_CN)

    里面包含了常用的上传用的commons-fileupload-1.2.1和commons-io-1.4以及下载用的jspsmartupload和有汉语情况时用到的jspsmart_zh_CN

    jsp上传和下载commons-fileupload例子及说明(推荐)

    因为jspsmartupload上传大文件的时候,比较慢。所以这里选择了commons-fileupload这个组件。 在网上有很多文章教我们怎样去做,但是往往都是很难做得出来的! 所以我这里给出了一个完整的例子!里面已经有所需要用到...

    commons-fileupload、smartupload

    该包里含有commons-fileupload和smartupload包,用于jsp中文件上传,应用commonsfile和smartupload编写的文件上传,如图片等

    commons.fileupload和jspSmartUpload文件上传和ExtJS前后台原代码

    1、利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,前台代码是Jsp,后台是用servlet处理,共2个例子,各有不同,比较使用; 2、有用jspSmartupload制作一个文件上传和下载的例子,其制作...

    java 实现大文件上传

    文件上传一直是B/S结构中很重要的一项功能,在java中并没有很好的实现文件上传的类包,因此出现了一些开源的组件,Smartupload ,commons-fileupload,还有国内的一个"牛人"的(不好意思叫不上名字来),这几个组件中...

    commons.fileupload和jspSmartUpload文件上传前后台原代码

    利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,共两个例子,个有不同,费用使用。另有用jspSmartupload制作一个文件上传和下载的例子,其制作的例子能够上传到数据库中。

    fileupload上传下载

    jsp 上传实现包,jspsmartupload_zh.jar;commons-fileupload-1.2.1.jar;commons-io-1.4.jar

    Java Web开发中的上传与下载技术.pdf

    文件的上传和下载在网络应用中非常普遍,应用各种文件上传与下载组件来实现可以简化操作、...介绍了jspSmartUpload、commons-fileUpload上传组件,Struts文件上传,Spring文件上传技术,及组件下载、输出流方式下载技术。

    纯JSP上传文件应用

    实际上smartUpload和commons-fileupload都有方法,经过一阵专研,终于让我找到了,写了一个demo,可以看看,这个项目是MyEclipse的java项目,可以打成jar档直接丢到web里边,工程下边有个readme.txt,说明了web工程...

    fileUp.zip_jspSmartUpload

    Java实现文件上传的4种方式:O’reilly的cos组件、Apache的commons-FileUpload、jspSmartUpload等方式。

    用于文件上传的有关jar包

    用于文件上传的有关jar包:commons-fileupload-1.2.2.jar,commons-io-1.3.2.jar,jspsmartupload.jar

    jspsmartupload

    建议使用commons-fileupload.jar(另外需要commons-io.jar) 下面为部分源代码: /**Create a factory for disk-based file items*/ DiskFileItemFactory factory = new DiskFileItemFactory(); /**设置最大的内存...

    在线音乐系统

    (2)本程序使用了antlr.jar、commons-beanutils.jar、commons-digester.jar、commons-fileupload.jar、commons-logging.jar、commons-validator.jar、jakarta-oro.jar、jspSmartUpload.jar、jstl.jar、msbase.jar、...

    jsp文件上传下载通用包

    Commons-fileupload 组件上传的基本原理 FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的 request请求也就是一个FileItem的有序组合,...

    java通过js上传文件

    简单的利用java与js实现文件上传 package com.fendou.myString; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import javax.servlet....

    fileupload jar包

    FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下面的文件上传功能,与常见的SmartUpload齐名

Global site tag (gtag.js) - Google Analytics