【问题标题】:Is it possible to convert a File to a FileReference behind the scenes?是否可以在幕后将文件转换为文件引用?
【发布时间】:2012-02-12 04:35:04
【问题描述】:

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

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

【问题讨论】:

    标签: flash actionscript-3 file air filereference


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      是的,这是不可能的,这是一种安全措施。 IE。在没有用户明确选择要发送的情况下,您应该无法从用户的 PC 发送随机文件。

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

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

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

      【讨论】:

      • URLStream 不能用于监控缓冲区的上传进度。我已经在做你描述的事情了,但是缓冲区的上传是一个黑匣子。我认为,由于它们提供了我想要作为 FileReference 一部分的确切功能,我想用它来上传除被引用文件之外的东西。似乎是一种奇怪的方式来分解它们的功能。
      猜你喜欢
      • 2020-01-27
      • 2011-05-29
      • 1970-01-01
      • 2019-09-15
      • 2017-01-05
      • 2014-10-03
      • 2019-02-09
      • 2022-01-16
      • 2020-10-20
      相关资源
      最近更新 更多