2

我正在使用带有 POST 操作的 HTTPService 来提交 Base64 编码文件(取自应用程序中的位图数据),但我确实可以了解 POST 操作的进度(例如 FileReference.upload()) .

我不认为这是可能的,但如果它是可能的(通过任何方式,我愿意改变我的设置来获得这个)。

4

3 回答 3

8

不要使用 HTTP 服务。使用 URLRequest、URLLoader 和 URLVariables。

如果您使用 HTTPService 标签,请使用它并将其替换为充满类似...的脚本标签


private function forYou() : void{
     var req : URLRequest = new URLRequest("PUT YOUR URL HERE")
     var loader : URLLoader = new URLLoader();
     var params : URLVariables = new URLVariables();
     params.WHATEVER = WHATEVER YOU WANT IT TO BE;
     req.data = params;
     req.method = URLRequestMethod.POST;
     loader.addEventListener(ProgressEvent.PROGRESS, YOUR LISTENER FUNCTION NAME);
     loader.load(req);
}

将此函数名称分配给根标记的 creationComplete 属性。

如果您不使用 HTTPService 标记,只需在您的操作脚本中使用 HTTPService 对象并使用上面的代码。

于 2008-12-23T20:05:01.337 回答
0

这对我使用 REST Web 服务很有效:

http://code.google.com/p/as3httpclient/wiki/Links

例子

于 2008-12-31T06:28:30.170 回答
0

这对于 HTTPService 是不可能的。它唯一的事件是result, fault, and invoke(除了和 的不相关的继承事件activatedeactivate

要获取上传过程的进度信息,服务器必须提供信息,这将需要在操作期间服务器和客户端之间的通信方式,而常规 HTTP POST 操作不具备这种方式。

一种选择可能是在服务器上创建一个对象,该对象将在服务器开始从您的客户端接收 POST 数据时被实例化。然后它将跟踪进度并将该数据公开给服务器端应用程序的其余部分。然后,您的客户端可以启动一个轮询系统,该系统将请求该特定变量的值。

不过,这似乎是一种牵强的选择……

于 2009-06-16T14:20:07.053 回答