用strust,为什么还用这个组件它不是用fileupload组件吗

解决方案 »

  1.   

    com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
        //初始化
       mySmartUpload.initialize(pageContext);
        //设置上载的最大值100M
        mySmartUpload.setMaxFileSize(100 * 1024*1024);
        //上载文件
       mySmartUpload.upload();
    这是我写的上传中的某一个文件中的代码,没有错啊,只不过我是jsp的
      

  2.   

    我是在 Struts的Actin里做的 
    // 上传初始化时有错
              su.initialize(pageContext);??????????????????有错???  
    不知道在Action里怎么得到 pageContext????
    各位大哥,请指教!!! 谢谢了!!!
      

  3.   

    在action,初始化不是这样的:SmartUpload su = new SmartUpload();
      ServletConfig config = servlet.getServletConfig();     
      su.initialize(config,servletRequest,servletResponse);
      

  4.   

    SmartUpload可以上传大文件吗??????我用它老是溢出.
    用fileupload组件又太慢.
    我的程序要求大文件上传.
      

  5.   

    SmartUpload是早期的一个文件上穿组件,在jsp中及servlet中均可以方便的使用:
    1 jsp中的用法:
    <jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />

    mySmartUpload.initialize(pageContext);
    mySmartUpload.setTotalMaxFileSize(10000000);
    mySmartUpload.upload();
    2 Servlet中的用法:
    SmartUpload mySmartUpload = new SmartUpload();
    mySmartUpload.initialize(config,request,response);
    mySmartUpload.setTotalMaxFileSize(10000000);
    mySmartUpload.upload();
    具体可以参看其标准example
    至于效率问题,确实SmartUpload有先天不足,相信大家都看过其源码,针对上传的优化非常简单,对大文件的判断及处理有问题,完全是服务器端的内存能力处理。其它备选方案:cos及apache组织的common-upload及基于common-upload之上的struts的upload解决方案。cos方案也是比较经典的老牌upload组件,但是同jspsmartupload一样,存在一定的问题;common-upload组件有两个重要的优点:
    一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);二是可以实现写disk缓存,即如果上传文件大于全局设置的temp值(如2m),那末上传的文件流会写到默认或指定的temp目录去,而不是纯粹占用服务器的内存(可以设想用jspsmartupload上传一个1G的movie看看,在上传的过程中,服务器的内存消耗直线上升,直到1G,如果有多用户的并发,死机就难以避免了)。
      

  6.   

    bigdog001兄:fileupload上传怎么这么慢啊???我们在局域网,上传速度才140K啊!!!!
    有办法更快吗??????????????????
    如果你解决我的这个问题,送上500分,怎么样????????????
      

  7.   

    使用commons-fileupload的基本常识:
    FileUpload对象的一些参数值—sizeMax、sizeThreshold、repositoryPath:SizeMax 用来设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; SizeThreshold 设置内存中缓冲区的大小,一旦文件的大小超过该值的时候,程序会自动将其它数据存放在repositoryPath指定的目录下作为缓冲。合理设置该参数的值可以保证服务器稳定高效的运行; RepositoryPath 指定缓冲区目录。
    想必这几个参数你肯定不会写错吧?其它原因:1  防病毒软件的问题
       在上传过程中,防病毒软件发现服务器上的文件改变,so实时去scan了,导致缓慢;2  网络因素
       看看本地上传与远程上传有无区别,有可能是网络设备配置的问题。重点关注方面:
    个人觉得上传的速度主要取决于SizeThreshold参数,默认是4096,即大概4k;
    但是这个数值建议更改为256 * 1024,即256k利用commons-fileupload的struts的上传速度快很多,实际上就是在struts的CommonsMultipartRequestHandler文件中默认的SizeThreshold参数提高为256k。 
      

  8.   

    bigdog001兄:我的设置没有问题:
    DiskFileUpload fu = new DiskFileUpload();
     // 设置允许用户上传文件大小,单位:字节
     fu.setSizeMax(1000*1024*1024);
     // 设置最多只允许在内存中存储的数据,单位:字节
     fu.setSizeThreshold(1*1024*1024);//1M但是还是很慢,一个50M的文件上传最少要5分钟!就是平均没分钟不到10M.这样的速度客户无法满意.
    还有没有其他的可能?????需要设置SocketSendBufferLength吗(Winsock 进行通信时的发送缓冲区)??
    我设置了还是没用;我把杀毒软件全关了.网络是局域网.如果你能帮我解决这个问题,当重谢!!决不食言!!!!
      

  9.   

    bigdog001:
    SizeMax 设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大; 用捕获异常来控制大文件上传,这样做很不理想,
    能不能详细讲下common-upload组件有两个重要的优点:
    一是可以方便的实现大文件头预知(即如果上传的文件大于你所设置的最大文件尺寸,例如200m,那末可能在刚上传到1m的时候,已经得知文件头中文件的大小,并判断出非法上传,停止上传动作),这个功能在struts中体现,不过是模块的全局设置参数(个人觉得还可以改进);希望能给点知道指导
    多谢  
      

  10.   

    1 jspsmartupload 的网站都没了,没人支持了
    2 上传大文件,内存益出不过上传图片还是很快的,如果想上传大文件,要改一下原代码;把内存释放掉我感觉还是不要用为好!