2011-04-09 86 views
0

由于某些原因,并非所有Excel文档都可以从我的电脑上传。在一半的情况下,从一个try-catch块获得错误“.. no !! error:”..什么是错误的?上传Excel文档时出现问题。怎么了?

 private function importXLS(e:MouseEvent):void { 
      fr = new FileReference(); 
      var fileFilter:FileFilter = new FileFilter("Excel (.xls)", "*.xls"); 
      fr.addEventListener(Event.SELECT,selectXLS); 
      fr.browse([fileFilter]); 
      statusLabel.text = "selecting..."; 
     } 

     private function selectXLS(e:Event):void { 
      fr = FileReference(e.target); 
      fr.addEventListener(Event.COMPLETE, fileIn); 
      fr.load(); 
      statusLabel.text = "loading..."; 
     } 

     private function fileIn(e:Event):void { 
      ba = new ByteArray(); 
      ba = fr.data; 

      xls = new ExcelFile(); 

      var flag:Boolean = false; 
      try{ 
       xls.loadFromByteArray(ba); 
       flag = true; 
      }catch(error:Error){ 
       Alert.show("no!! error: " + error.getStackTrace()); 
      } 
      if (flag == true) { 
       statusLabel.text = "XlS loaded."; 
      } else { 
       statusLabel.text = "XlS didn't load."; 
      } 

     } 
+0

可能是因为很多人认为如果csv文件或包含HTML标记的文件被赋予了.xls的扩展名,它们会自动转换为Excel文件。尝试检查这些文件的实际内容,看看它们是否真的是Excel文件,或者其他伪装成Excel文件的文件。 – 2011-04-09 19:26:28

+0

我创建了这些文件,或者他们创建了我的朋友。他们确实是Excel文件 – M1sha 2011-04-09 19:49:57

+0

error.getStackTrace()的内容是什么,应该给loadFromByteArray中的可疑行号和任何后续的方法调用,发生什么情况时会发生什么你运行在调试模式下,它遇到了这个错误,它看起来像它有正确的值(某种长度的字节数组)。需要更多的调试信息。 – shaunhusain 2011-04-09 21:57:28

回答

0

您正在将整个文件读入内存。如果用户尝试上传太大的文件,他们的浏览器将崩溃。你有这样的理由吗?您是使用客户端中的字节还是将它们传递给服务器?如果您将它们传递给服务器,那么您不想使用在selectXLS()中调用的fr.load方法。而是使用fr.upload并避免你的整个问题。

相关问题