我认为您在这里有两个基本问题:
- 如何选择本地文件通过 Flash 上传?
- 如何将多个文件作为 POST 发送到服务器?
对于#1,您需要使用flash.net.FileReference。
对于#2 Flash 中没有内置的“Multipart”加载程序,我很确定这是您需要的。我发现的最好的是这位名叫 Eugene 的天才开发者:http ://blog.inspirit.ru/?p=198 。这很好用,虽然我个人对 IE8 和 IE9 中的 onComplete 处理程序有一些问题。我确定这是 IE 的错,而不是 Eugene 的错。我在监听 HTTPStatusEvent 事件时解决了这个问题,如下所示:
var ml:MultipartURLLoader = new MultipartURLLoader();
ml.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent);
ml.addVariable('Content-Type', "image/png");
ml.addFile(pngStream, filename, "file", "image/png");
ml.load('http://...');
function onHTTPStatusEvent( event: HTTPStatusEvent ){
if(stat == 0 || (stat >= 200 && stat < 205)){
//upload success
}else{
//some kinda error
}
}
(这应该与多个 addFiles(_) 一起使用;)
我也在监听标准事件:
ml.addEventListener(Event.COMPLETE, uploadComplete);
ml.addEventListener(ProgressEvent.PROGRESS, uploadProgress);
但是根本无法让 PROGRESS 工作,并且 COMPLETE 不会在 IE 上触发......有人知道在 IE 上工作的任何替代方案吗?Eugene 的代码现在正在为我工作,但我不认为我可以添加一个“正在上传......”进度条......这会很酷。