2

看起来 FileReference.upload() 是您可以在 Flash 中将文件上传到服务器并通过 PROGRESS 回调获取有关其上传状态的反馈的唯一方法。所有其他方法只是进入以太,并在文件上传完成后返回。

不幸的是,FileReference 似乎坚持要求用户选择要上传的文件。似乎没有一种机制可以通过代码设置文件。我需要这个的原因是我允许用户上传大量文件并以块的形式上传它们,所以,我只想将一大块数据打包到 FileReference 中(可能是 5 或 10 兆)并将其发送出去看着它走。有人对是否可以手动将数据加载到 FileReference 对象有任何想法吗?遗憾的是,数据属性是只读的。对此的任何和所有建议都将得到善意对待:)

4

2 回答 2

1

发帖人不是试图从用户系统上传随机文件,而是试图获取文件引用以上传自定义数据——不幸的是它不能。

我发现这个链接非常有帮助: http: //labs.findsubstance.com/2008/04/03/as3-upload-encode-images/

于 2012-03-19T23:49:34.493 回答
0

是的,这不应该是可能的,这是一种安全措施。即,如果没有用户明确选择要发送的随机文件,您不应该能够从用户的 PC 发送随机文件。

但是,如果您设计不同,您可以监控上传。例如,您可以使用 URLStream 或 Socket 或 NetConnection 发送您想要的任何数据,并配置服务器以您需要的方式响应。例如,URLStream 提供了一个可用于发送和接收数据的读/写流。然后您可以将它与某种缓冲区一起使用:发送缓冲区的内容,等待服务器确认接收到数据,重新填充缓冲区,重复。

编辑:所以我猜我们正在谈论 AIR 应用程序(因为你提到了文件)?因此,您可能正在使用 FileStream 打开一个文件,并希望发送您刚刚通过使用 FileReference.upload() 接收到的数据块 - 对吗?好吧,那么似乎 FileReference 不能默默地做到这一点。尽管如此,我还是会使用 URLStream 将您要上传的大量数据拆分为 100 个部分,然后在之后发送每个部分从配置为接受它的服务器脚本接收 OK。通常,文件上传由 HTTP 服务器直接处理,但您的情况需要一些额外的工作,即启动一个脚本来协商“包”大小、接收包并确认接收。对于可能超时的服务器脚本来说,这可能不那么简单,但肯定有一个解决方案。

或者,您可以将 HTTP 服务器配置为在接收到套接字策略请求后提供套接字策略,然后,您可以连接到 Socket 并复制通常通过 FileReference 或类似 HTML 控件发送的 multipart-form-data 类型的请求。(我可能会选择这种方式,如果它不是共享主机或其他任何会阻止我配置服务器的东西)。

于 2012-02-12T07:24:34.300 回答