尝试在安装了 IIS 和 PHP 5.3 的运行 Windows 的本地计算机上使用 flash swf 上传。
var selected_file:FileReference = GetSelectedFile();
var url:String = 'http://localhost.com/upload.php';
var req:URLRequest = new URLRequest(url);
req.data = new URLVariables('source=' + 'computer');
req.method = URLRequestMethod.POST;
selected_file.upload(req, 'file', false);
selected_file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, UploadComplete, false, 0, true);
selected_file.addEventListener(ProgressEvent.PROGRESS, UploadProgress, false, 0, true);
selected_file.addEventListener(IOErrorEvent.IO_ERROR, UploadError, false, 0, true);
selected_file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, UploadSecurityError, false, 0, true);
我在所有处理函数上都设置了断点。UploadProgress
我在处理程序上打了一个断点。但是,该文件没有被上传。在查看网络流量时,没有调用upload.php
.
查看FileReference 上传功能的文档,我看到了:
如果调用 SWF 文件位于本地文件系统沙箱中,则不允许上传和下载
查看local-with-filesystem 沙箱的定义,我发现:
在这个沙箱中,可执行代码可以读取本地文件(例如,通过使用 URLLoader 类),但无法以任何方式与网络通信。这可以确保用户不会将本地数据泄露到网络或以其他方式不当共享。
这是否意味着无法在本地机器上测试上传?
更新: 据说我需要将Security.sandboxType设置为LOCAL_TRUSTED
. 我一直在尝试通过为 user和global添加配置文件来设置安全类型。配置文件具有cfg
扩展名并包含一行,即我的 swf 文件所在文件夹的路径。
仍然在添加此配置后,Security.sandboxType 设置为“远程”。