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