2011-02-03 70 views
1

注意:我完全不知道使用Flash/ActionScript。如何異步上傳ActionScript文件?

我使用jquery webcam plugin從相機捕捉圖片。該插件提供了將捕獲的圖片上傳到服務器的ActionScript代碼。除了一件事 - 它正在上傳我的網頁凍結時,它工作正常。

我在哪裏可以閱讀關於使用Flash進行異步文件上傳或如何更改以下代碼以異步上傳文件?

public static function save(file:String):Boolean { 


      if ("stream" == mode) { 

      return true; 

     } else if (null != buffer) { 

      if ("callback" == mode) { 

       for (var i = 0; i < 240; ++i) { 

        var row = ""; 
        for (var j=0; j < 320; ++j) { 
         row+= buffer.getPixel(j, i); 
         row+= ";"; 
        } 
        ExternalInterface.call("webcam.onSave", row); 
       } 

      } else if ("save" == mode) { 

       if (file) { 

        var e = new JPGEncoder(quality); 

        var sal = {}; 
        sal.sendAndLoad = XML.prototype.sendAndLoad; 
        sal.contentType = "image/jpeg"; 
        sal.toString = function() { 
         return e.encode(JSCam.buffer); 
        } 

        var doc = new XML(); 
        doc.onLoad = function(success) { 
         ExternalInterface.call("webcam.onSave", "done"); 
        } 

        sal.sendAndLoad(file, doc); 
/* 
        ExternalInterface.call('webcam.debug', "error", "No save mode compiled in."); 
        return false; 
*/ 
       } else { 
        ExternalInterface.call('webcam.debug', "error", "No file name specified."); 
        return false; 
       } 

      } else { 
       ExternalInterface.call('webcam.debug', "error", "Unsupported storage mode."); 
      } 

      buffer = null; 
      return true; 
     } 
     return false; 

} 
+0

ActionScript中的文件上傳是異步的。沒有經過測試,我猜想這是導致凍結的上載以外的東西(例如可能是像素循環,getPixel()部分)。代碼位於ActionScript 2的舊版本ActionScript 2中。在當前版本的ActionScript 3中,像jpg編碼圖像的東西要快得多。如果您可以找到另一個用於訪問攝像頭的jQuery插件,使用AS3的更近期的插件,我想這是最好的。 – 2011-02-03 17:19:42

回答

0

Pedro Correia分享了一個actionscript class實現異步上傳。這有點舊(AS2,2007),但可能有所幫助。

+0

看來在該類中,用戶必須選擇一些要上傳的文件,然後才能真正開始上傳。但是我在內存中有數據,實際上沒有本地文件 – 2011-02-03 13:40:23