5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

jspSmartUpload问题,急等啊!谢谢!

楼主bean5566(bean5566)2005-05-27 17:21:41 在 Java / Web 开发 提问

大家好,我用的是jspSmartUpload上传文件,遇到一些问题,请指教!谢谢!  
  就是//   上传初始化   su.initialize(pageContext);报错!!!不知道代码哪里有问题!谢谢大家!  
   
   
  apply.jsp申请表  
   
   
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <html>  
  <head>  
  <title>  
  apply  
  </title>  
  </head>  
  <body   bgcolor="#ffffff">  
  <FORM   name="upload"     ENCTYPE="multipart/form-data"   METHOD=POST   ACTION="aaaa.do?command=do_apply">  
  <table>  
      <tr>  
          <TD   bgColor=#ffffff   class="12">姓名   </TD>  
                  <td   width="42%"   bgColor=#ffffff><input     type="text"   name="cname"   maxlength="10"/>  
          </td>  
      </tr>  
                          <TR>  
                                                          <TD   bgColor=#ffffff   class="12">身份证号码   </TD>  
                                                          <TD   bgColor=#ffffff   colSpan=2><INPUT   type="text"   name="csid">  
                                                              </TD>  
                                                      </TR>  
                                                      <TR>  
                                                          <TD   bgColor=#ffffff   class="12">电话   </TD>  
                                                          <TD   bgColor=#ffffff   colSpan=2><INPUT   type="text"   name="ctel">  
                                                              </TD>  
                                                      </TR>      
                                                          <tr>  
                                                          <td>添加附件</td>  
                                                          <td><div><input   type="file"   name="cisdjpg"/>  
                                                          </div></td>  
                                                      </tr>  
                                                      <tr>  
                                                          <td><input     type="submit"   name="submit"   value="确定"/></td>  
                                                      </tr>  
  </table>  
  </form>  
  </body>  
  </html>  
   
   
   
   
   
  aaaaAction里面的apply方法:  
   
   
  import^^^^^^^^^^^^^^^^^^^^^  
   
  public   class   aaaaAction   extends   DispatchAction   {  
   
                  public   ActionForward   applyPersonEseal(ActionMapping   actionMapping,   ActionForm   actionForm,   HttpServletRequest   httpServletRequest,   HttpServletResponse   httpServletResponse)   throws   ServletException,   SmartUploadException{  
   
                              CustomerDao   customerdao   =   new   CustomerDao();  
                              Customer   customer   =   new   Customer();  
                              String   cname   =   httpServletRequest.getParameter("cname");  
                              String   csid   =   httpServletRequest.getParameter("csid");  
                              String   ctel   =   httpServletRequest.getParameter("ctel");  
                              String   csidpath="/upload/"+"CSID-"+csid;  
                              /////////////////////////////////////////////////////////  
   
   
                              try   {  
   
                      //   新建一个SmartUpload对象  
                      SmartUpload   su   =   new   SmartUpload();  
  //   上传初始化  
                      su.initialize(pageContext);??????????????????有错???  
  //   设定上传限制  
  //   1.限制每个上传文件的最大长度。  
  //   su.setMaxFileSize(10000);  
  //   2.限制总上传数据的长度。  
  //   su.setTotalMaxFileSize(20000);  
  //   3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。  
  //   su.setAllowedFilesList("doc,txt");  
  //   4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,   jsp,htm,html扩展名的文件和没有扩展名的文件。  
  //   su.setDeniedFilesList("exe,bat,jsp,htm,html,,");  
  //   上传文件  
                      su.upload();  
  //   将上传文件全部保存到指定目录  
                      int   count   =   su.save("/upload");  
                      System.out.println(count+"个文件上传成功!<br>");  
   
  //   利用Request对象获取参数之值  
                      System.out.println("TEST="+su.getRequest().getParameter("TEST")   +"<BR><BR>");  
   
  //   逐一提取上传文件信息,同时可保存文件。  
                      for   (int   i=0;i<su.getFiles().getCount();i++)  
                      {  
                      com.jspsmart.upload.File   file   =   su.getFiles().getFile(i);  
   
  //   若文件不存在则继续  
                      if   (file.isMissing())   continue;  
   
  //   显示当前文件信息  
                      System.out.println("<TABLE   BORDER=1>");  
                      System.out.println("<TR><TD>表单项名(FieldName)</TD><TD>"     +   file.getFieldName()   +   "</TD></TR>");  
                      System.out.println("<TR><TD>文件长度(Size)</TD><TD>"   +     file.getSize()   +   "</TD></TR>");  
                      System.out.println("<TR><TD>文件名(FileName)</TD><TD>"     +   file.getFileName()   +   "</TD></TR>");  
                      System.out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"   +   file.getFileExt()   +   "</TD></TR>");  
                      System.out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"   +   file.getFilePathName()   +   "</TD></TR>");  
                      System.out.println("</TABLE><BR>");  
   
  //   将文件另存  
  //   file.saveAs("/upload/"   +   myFile.getFileName());  
  //   另存到以WEB应用程序的根目录为文件根目录的目录下  
  //   file.saveAs("/upload/"   +   myFile.getFileName(),   su.SAVE_VIRTUAL);  
  //   另存到操作系统的根目录为文件根目录的目录下  
  //   file.saveAs("c:\\temp\\"   +   myFile.getFileName(),   su.SAVE_PHYSICAL);  
   
                      }  
                      customer.setCname(cname);//姓名  
                      customer.setCsid(csid);//身份证  
                      customer.setCtel(ctel);//电话  
                      customer.setCtel(csidpath);//附件路径  
   
                      customerdao.addOneCustomer(customer);  
   
   
                                  return   actionMapping.findForward("success");  
                              }  
                              catch   (Exception   ex)   {  
   
                              }  
                                      return   actionMapping.findForward("error_error");  
              }  
  } 问题点数:50、回复次数:15Top

1 楼yxhzj(余华[学习J2EE中])回复于 2005-05-27 17:27:15 得分 10

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

2 楼bean5566(bean5566)回复于 2005-05-27 18:00:14 得分 0

哦,可是那个我没有用过啊?  
  Top

3 楼thinkway(思维)回复于 2005-05-27 18:04:12 得分 0

报的是什么错,帖出来看看Top

4 楼huguangwu(追风少年)回复于 2005-05-27 18:23:12 得分 0

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

5 楼bean5566(bean5566)回复于 2005-06-01 13:52:54 得分 0

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

6 楼dujianmeng(heihei)回复于 2005-06-01 16:43:12 得分 20

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

7 楼zzxhunter(宝蓝)回复于 2005-06-01 18:48:59 得分 0

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

8 楼bigdog001(大狗)回复于 2005-06-02 00:33:33 得分 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,如果有多用户的并发,死机就难以避免了)。  
   
   
  Top

9 楼zzxhunter(宝蓝)回复于 2005-06-02 09:04:49 得分 0

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

10 楼bigdog001(大狗)回复于 2005-06-02 12:18:32 得分 10

使用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。  
   
     
  Top

11 楼zzxhunter(宝蓝)回复于 2005-06-02 12:41:28 得分 0

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

12 楼bluebillow()回复于 2005-06-02 13:45:09 得分 0

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

13 楼btk_hwt()回复于 2005-06-02 14:48:02 得分 0

文件上传  
  学习一下Top

14 楼kingbug(上帝是个程序员)回复于 2005-06-02 18:15:01 得分 0

http://blog.csdn.net/kingbug/Top

15 楼jxufe_lw()回复于 2005-06-02 19:00:51 得分 5

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

相关问题

  • 急求jspSmartUpload包
  • jspSmartUpload 上传问题。。很急。。俺在线等等等等等
  • 关乎饭碗的焦急:关于jspsmartupload的问题,我会在线等待的。
  • 怎么用servlet实现对jspsmartupload上传文件的引用???急!在线等!
  • 100分!急!求jspSmartUpload组件!
  • 100分!急!求jspSmartUpload组件!
  • 急!有谁有jspSmartUpload组件?
  • 急!一个关于jspSmartUpload在Solaris(Unix)上载路径设置的问题!?在线等待!
  • 紧急,,关于jspSmartUpload上传问题
  • 50分求jspSmartupload!!!!!!!!救命,急用

关键词

得分解答快速导航

  • 帖主:bean5566
  • yxhzj
  • dujianmeng
  • bigdog001
  • bigdog001
  • jxufe_lw

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问