FileReference

您所在的位置:网站首页 flash发布出来的文件其类型不可能是 FileReference

FileReference

2023-07-12 07:41| 来源: 网络整理| 查看: 265

public function upload(request:URLRequest, uploadDataFieldName:String = "Filedata", testUpload:Boolean = false):void

语言版本: ActionScript 3.0运行时版本: AIR 1.0, Flash Player 9

开始将文件上载到远程服务器。虽然 Flash Player 没有限制可上载或下载的文件的大小,但是播放器正式支持的上载或下载文件大小最大为 100 MB。调用此方法之前,必须先调用 FileReference.browse() 或 FileReferenceList.browse() 方法。

对于扩展 FileReference 类的 Adobe AIR File 类,可以使用 upload() 方法上载任何文件。对于在 Flash Player 中使用的 FileReference 类,用户必须首先选择一个文件。

侦听器接收事件来表示上载的进度、成功或失败。尽管可以使用 FileReferenceList 对象让用户选择多个要上载的文件,但必须逐个上载文件。为此,需遍历由 FileReference 对象组成的 FileReferenceList.fileList 数组。

FileReference.upload() 和 FileReference.download() 函数是非阻塞式的。这些函数在调用它们之后即返回,而不会等待文件传输完成。此外,若 FileReference 对象离开作用域,则对该对象尚未完成的上载或下载操作将在它离开作用域后被取消。只要希望上载或下载操作继续,就应确保将 FileReference 对象保留在作用域中。

文件上载到在 url 参数中传递的 URL。该 URL 必须是配置为接受上载的服务器脚本。Flash Player 使用 HTTP POST 方法上载文件。处理上载的服务器脚本应收到包含下列元素的 POST 请求:

Content-Type ,属于 multipart/form-dataContent-Disposition,其 name 属性默认情况下设置为 "Filedata",filename 属性设置为原始文件的名称文件的二进制内容

无法连接到常用的保留端口。有关已阻止的端口的完整列表,请参阅《ActionScript 3.0 开发人员指南》中的“限制网络 API”。

对于范例 POST 请求,请参阅有关 uploadDataFieldName 参数的描述。可以使用 upload() 方法向服务器发送 POST 或 GET 参数,请参阅有关 request 参数的描述。

如果 testUpload 参数为 true,并且要上载的文件大于约 10 KB,则基于 Windows 的 Flash Player 在上载实际的文件之前,会先发送不带内容的测试上载 POST 操作,以验证传输操作是否可能成功。之后,Flash Player 会再次发送 POST 操作,这时其中将包含实际的文件内容。对于小于 10 KB 的文件,Flash Player 则仅执行一次上载 POST 操作,其中包含要上载的实际文件内容。基于 Macintosh 的 Flash Player 不执行测试上载 POST 操作。

注意:如果服务器要求用户身份验证,则只有在浏览器中运行的 SWF 文件(即使用浏览器插件或 ActiveX 控件的文件)才可以提供对话框来提示用户输入用户名和密码以进行身份验证,并且只适用于下载。对于使用插件或 ActiveX 控件进行的上载操作,以及使用独立或外部播放器进行的上载和下载操作,文件传输会失败。

使用此方法时,请考虑 Flash Player 安全模型:

如果执行调用的 SWF 文件在不受信任的本地沙箱中,则不允许进行加载操作。默认行为是拒绝沙箱之间的访问。网站可通过添加 URL 策略文件来实现对资源的访问。可以在包含 SWF 内容的 HTML 页中设置 object 和 embed 标签的 allowNetworking 参数,防止 SWF 文件使用此方法。

但在 Adobe AIR 中,application 安全沙箱中的内容(使用 AIR 应用程序安装的内容)不受这些安全限制的约束。

有关安全性的详细信息,请参阅 Flash Player 开发人员中心主题:安全性。

请注意,由于已向 Flash Player 中添加了新功能,因此当发布到 Flash Player 10 时,一次只可以激活下列操作中的一个操作:FileReference.browse()、FileReference.upload()、FileReference.download()、FileReference.load()、FileReference.save()。否则,Flash Player 会引发运行时错误(代码 2174)。使用 FileReference.cancel() 可停止正在进行的操作。此限制仅适用于 Flash Player 10。早期版本的 Flash Player 在同时进行多个操作时不会受到此限制的影响。

参数

request:URLRequest — URLRequest 对象,URLRequest 对象的 url 属性应包含特定服务器脚本的 URL,该服务器脚本被配置为通过 HTTP POST 调用处理上载。在某些浏览器上,URL 字符串长度受限。在某些浏览器或服务器上,长度超过 256 个字符的字符串可能失败。若此参数为 null,将引发异常。URLRequest 对象的 requestHeaders 属性将被省略;上载或下载时不支持自定义 HTTP 请求标头。

该 URL 可以是 HTTP,或者为了安全地进行上载,也可以是 HTTPS。要使用 HTTPS,请在 url 参数中使用 HTTPS URL。如果在 url 参数中没有指定端口号,则默认情况下,将使用端口 80(对于 HTTP)或端口 443(对于 HTTPS)。

要向服务器发送 POST 或 GET 参数,请将 URLRequest 对象的 data 属性设置为您的参数,并将 method 属性设置为 URLRequestMethod.POST 或 URLRequestMethod.GET。

 uploadDataFieldName:String (default = "Filedata") — 在上载 POST 操作中位于文件数据之前的字段名。uploadDataFieldName 值必须为非空字符串。默认情况下,uploadDataFieldName 的值为 "Filedata",如下面的范例 POST 请求所示: Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="Filedata"; filename="example.jpg" Content-Type: application/octet-stream ... contents of example.jpg ... --AaB03x--  testUpload:Boolean (default = false) — 请求上载测试文件的设置。如果 testUpload 为 true,则对于大于 10 KB 的文件,Flash Player 将尝试进行内容长度为 0 的测试文件上载 POST。测试上载将检查实际文件上载是否可能成功,以及服务器身份验证(如果需要)是否可能成功。测试上载仅适用于 Windows 播放器。 事件open:Event — 当上载操作开始时调度。  progress:ProgressEvent — 在文件上载操作期间进行定期调度。  complete:Event — 当文件上载操作成功完成时调度。  uploadCompleteData:DataEvent — 成功上载文件并从服务器接收数据之后调度。  securityError:SecurityErrorEvent — 由于安全错误导致上载失败时调度。  httpStatus:HTTPStatusEvent — 由于 HTTP 错误导致上载失败时调度。  httpResponseStatus:HTTPStatusEvent — 上载操作成功完成,服务器返回响应 URL 和响应标头。  ioError:IOErrorEvent — 在下列任一情形下调用: 由于 Flash Player 或 Adobe AIR 在读/写或传输文件期间发生输入/输出错误,导致上载失败。由于试图将文件上载到要求身份验证(如用户名和密码)的服务器,上载失败。在上载过程中,没有为用户提供输入密码的方式。由于 url 参数包含无效协议,导致上载失败。FileReference.upload() 必须使用 HTTP 或 HTTPS。 引发SecurityError — 本地不受信任的 SWF 文件可能无法与 Internet 进行通信。要避免这种情况,请将此 SWF 文件重新分类为只能与远程内容交互或受信任。引发此异常时会附带一个消息,指明不允许访问的本地文件和 URL 的名称。  SecurityError — 无法连接到常用的保留端口。有关已阻止的端口的完整列表,请参阅《ActionScript 3.0 开发人员指南》中的“限制网络 API”。  IllegalOperationError — 在以下情况下引发:1) 另一个 FileReference 或 FileReferenceList 浏览会话正在进行中;每次仅能执行一个文件浏览会话。2) URL 参数为无效的路径或协议。文件上载必须使用 HTTP 协议,文件下载则必须使用 FTP 或 HTTP 协议。3) uploadDataFieldName 参数设置为 null。4) 用户 mms.cfg 文件中的某个设置禁止此操作。  ArgumentError — 在以下情况下引发:1) uploadDataFieldName 参数为空字符串。2) url.data 为 ByteArray 类型。当与 FileReference.upload() 和 FileReference.download() 方法一起使用时,url.data 只能为 URLVariables 或 String 类型。3) 在 AIR 运行时中(在应用程序安全沙箱中),URLRequest 的方法不是 GET 和 POST(而是使用 uploadEncoded())。  MemoryError — 发生此错误的原因有:1) Flash Player 无法将 URLRequest.data 参数从 UTF8 转换为 MBCS。如果传递给 FileReference.upload() 的 URLRequest 对象设置为执行 GET 操作并且 System.useCodePage 设置为 true,将发生该错误。2) Flash Player 无法为 POST 数据分配内存。如果传递给 FileReference.upload() 的 URLRequest 对象设置为执行 POST 操作,将发生该错误。

相关 API 元素

FileReference.browse()FileReferenceList.browse()FileReference.download()FileReferenceList.fileListFileReference.load()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3