了解文件上传的Flash Player 10安全模型
我一直在读Flash Player 10中文件上传的安全限制。根据,上传不必由用户发起的操作触发(browse()会触发,但这是另一回事)。如果是这样的话,那么多文件上传会给用户带来尴尬的体验,因为一次只能进行一次上传——因此用户必须对每个文件单击(或按下按钮)一次来启动上传,但只有在上一个文件上传完后才可以 另一方面,《公约》规定: 在Flash Player 10及更高版本中,如果使用多部分内容类型(用于 示例“多部分/表单数据”),其中包含上载(由 文章中“内容处置”标题中的“filename”参数 主体),后操作受适用于的安全规则的约束 上载: 必须执行POST操作以响应用户发起的请求 操作,如鼠标单击或按键。 证实URLLoader文档(请参阅“发布API”部分) 但是,原始版本并没有说明这一点——只是FileReference浏览必须响应用户启动的操作,而不是(可能由URLLoader驱动的)上载本身: 当SWF文件使用FileReference.browse()和 方法将文件上载到服务器Flash 玩家执行两项安全规则:了解文件上传的Flash Player 10安全模型,flash,security,file-upload,Flash,Security,File Upload,我一直在读Flash Player 10中文件上传的安全限制。根据,上传不必由用户发起的操作触发(browse()会触发,但这是另一回事)。如果是这样的话,那么多文件上传会给用户带来尴尬的体验,因为一次只能进行一次上传——因此用户必须对每个文件单击(或按下按钮)一次来启动上传,但只有在上一个文件上传完后才可以 另一方面,《公约》规定: 在Flash Player 10及更高版本中,如果使用多部分内容类型(用于 示例“多部分/表单数据”),其中包含上载(由 文章中“内容处置”标题中的“filena
- FileReference.browse()必须从用户事件处理程序(鼠标或键盘事件)中调用
TL;DR:文档包含相互冲突的信息,我不相信我的现场测试(面对那些说测试不可行的文档)URLLoader可以在没有用户交互的情况下上载文件吗?还是仅用于文件引用?(这将扼杀大多数文件预处理的可能性,这正是我所感兴趣的!)我相信Adobe希望拥有它,这样您就无法在没有交互的情况下使用URLLoader上载文件。我只是认为他们没有以最好的方式完成这项工作,您可以根据使用URLLoader上载文件的具体方式来解决这一问题(如果您在文章中为URLLoader添加了一个文件名,它应该会出错,但您可以通过Base64编码文件并将其与URLLoader一起发送到php来解决这一问题)
看一看。请通读其中的评论,它们似乎也解决了这个问题。希望这会有所帮助。您没有错误,因为您正在调试中运行。在我的speedtest项目中遇到同样的问题
所以对于问题:
无法在没有用户交互的情况下上载文件。FileReference
- 如果您使用的是
、POST
和multipart/form data
属性,则filename
无法在没有用户交互的情况下上载文件urloader
- 如果您使用的是
之类的内容类型,并将文件体编码(例如base64)放入post请求中,则可以使用application/octet stream
上载文件。这意味着,如果您使用的是PHP,那么您将不会使用urloader
,而是使用$\u文件
数组来获取文件$\u POST
- 在本地计算机上以调试模式工作时,不会触发
限制错误URLLoader
FileReference.Upload()
之前必须调用FileReference.browse()
。是的,我理解:-),但假设用户单击“浏览”按钮,通过FileReferenceList
选择17个文件。这17个文件无需进一步的用户交互即可上传。但是,如果我们想在上传它们之前以某种方式修改它们(比如,在客户端调整图像文件的大小),那么用户必须再点击17次,每次点击一次来启动(URLLoader)上传。这就是我所说的双重标准。当然,如果有可接受的解决方法(比如Base64编码),没有人会强迫用户点击17次,事实并非如此。我使用的是MultiPowerUpload,所以上传需要2次点击,第一次是浏览,然后你可以管理图像,比如裁剪或调整大小,然后第二次点击上传所有图像。如果你愿意,我会发布一些代码,它是如何制作的。当然,我真的很好奇你是怎么做到的!(我能想到的唯一方法是立即开始所有上传。)