Flash 如何使用ActionScript异步上载文件?

Flash 如何使用ActionScript异步上载文件?,flash,file-upload,Flash,File Upload,注意:我对Flash/ActionScript一无所知 我正在使用Jquery从照相机中捕获图片。这个插件提供了ActionScript代码,可以将捕获的图片上传到服务器。它工作正常,除了一件事-当文件上传时,我的网页冻结 在哪里可以阅读有关使用Flash异步上传文件的内容,或者如何更改以下代码以异步上传文件 public static function save(file:String):Boolean { if ("stream" == mode) {

注意:我对Flash/ActionScript一无所知

我正在使用Jquery从照相机中捕获图片。这个插件提供了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;

}
公共静态函数保存(文件:字符串):布尔值{
如果(“流”==模式){
返回true;
}else if(null!=缓冲区){
如果(“回调”==模式){
对于(变量i=0;i<240;++i){
var行=”;
对于(var j=0;j<320;++j){
行+=缓冲区.getPixel(j,i);
行+=“;”;
}
ExternalInterface.call(“webcam.onSave”,世界其他地区);
}
}否则如果(“保存”==模式){
如果(文件){
var e=新的JPGEncoder(质量);
var sal={};
sal.sendAndLoad=XML.prototype.sendAndLoad;
sal.contentType=“图像/jpeg”;
sal.toString=函数(){
返回e.encode(JSCam.buffer);
}
var doc=newxml();
doc.onLoad=函数(成功){
外部接口呼叫(“webcam.onSave”、“done”);
}
sal.sendAndLoad(文件、文档);
/*
ExternalInterface.call('webcam.debug',“error”,“未在中编译保存模式”);
返回false;
*/
}否则{
ExternalInterface.call('webcam.debug',“error”,“未指定文件名”);
返回false;
}
}否则{
ExternalInterface.call('webcam.debug',“error”,“不支持的存储模式”);
}
缓冲区=空;
返回true;
}
返回false;
}

Pedro Correia共享了一个实现异步上传的。它有点旧(AS22007),但可能会有所帮助。

在该类中,用户必须选择一些要上载的文件,然后才能真正开始上载。但我的内存中有数据,没有本地文件,实际上ActionScript中的文件上载是异步的。如果没有对它进行测试,我猜是不是上传导致了冻结(比如像素上的循环,getPixel()部分)。代码在ActionScript 2中,ActionScript的旧版本。像jpg编码图像这样的东西在当前版本ActionScript3中要快得多。如果你能找到另一个jQuery插件来访问相机,一个最近的插件,使用AS3,我想那将是最好的。