我也遇到了这样的问题,我察看了SmartUpload的源文件,最后找到了解决的办法
问题出现的情况:我使用javasrcipt定了一个函数
function clicksubmit() {
  document.forms[0].submit();
  }又在form里面定义一个按钮 
<INPUT TYPE="button" NAME="button" VALUE="上传文件" CLASS="button" ONCLICK="return clicksubmit();" >
最开始,按钮的类型是  submit 上传文件的时候,就出现了和你相似的问题。
于是我就改写了 按钮的类型为 button就好了。
原因:
是因为如果使用javascript函数提交一个submit类型的表单,客户端提交两次请求,有一次请求是空请求,而SmartUpload没有处理这个空请求的机制,导致了SmartUpload分析部分的死循环,解决的办法,1改写SmartUpload 2 把按钮类型设置为button在用javascript提交
祝你好运!

解决方案 »

  1.   

    不是阿,我试过你的方法了,就是改javascript提交,好像还是不行
    比较顽固
      

  2.   

    jspSmartUpload好像是把文件一次全都读到内存当中,如果文件太大可能就会出事了。
    你可以在程序中设置一下buffer的长度,每次读一部分,比如每次读8kb。
      

  3.   

    to kadina(次帅):
    好像不是这样,我上传一个不大的记事本,也出现漫长的等待。可能就是它内部机制的缺陷,真实美中不足阿
      

  4.   

    我觉得是和文件大小有关的,smartupload文件中一次从request中得到的数据流
      

  5.   

    你填的其他字段是不是有中文,jspsmart对中文支持狂差
      

  6.   

    http://expert.csdn.net/Expert/topic/1669/1669202.xml?temp=.2450373
    这是我遇到的问题,你可以反编译jspsmartupload看一下,是不是因为这个问题
      

  7.   

    for(; totalRead < m_totalBytes; totalRead += readBytes)
                try
                {
                readBytes = m_request.getInputStream().read(m_binArray, totalRead, m_totalBytes - totalRead);

                }
                catch(Exception e)
                {
                    throw new SmartUploadException("Unable to upload.");
                }这是smart的程序片
    注意这段代码,如果readBytes为-1的话,这就是一个死循环的程序片,也就是说,如果再上传文件的时候,出现问题,导致了readBytes为-1那么就会出现一个死循环的线程,服务器肯定坚持不住几个这样的死循环。我的修改办法加入如下的语句for(; totalRead < m_totalBytes; totalRead += readBytes)
                try
                {
                    readBytes = m_request.getInputStream().read(m_binArray, totalRead, m_totalBytes - totalRead);
           if(readBytes==-1)
    throw new Exception();

                }
                catch(Exception e)
                {
                    throw new SmartUploadException("Unable to upload.");
                }祝你好运!