fileReference上传后获取信息?

时间:2009-08-13 23:22:00

标签: php flash actionscript-3 upload file-upload

通常当我通过URLLoader向PHP脚本发送信息时,我会让PHP返回各种成功代码,因此我可以让我的Flash文件根据PHP返回的任何成功代码进行响应(0表示失败,1表示成功,2表示一些其他错误代码等。)。

现在我正在尝试提交一个包含大量数据的表单(姓名,电子邮件,生日等)以及上传文件。我正在使用fileReference上传文件并发送附加变量以及上传请求。该信息正好使我的PHP文件。但是,我找不到从PHP文件获取信息的任何方法。也就是说,如果文件成功加载,我希望PHP回显“success = 1”,如果将数据插入MySQL数据库等时出现错误,则“success = 2”,但目前我不能弄清楚如何从PHP获取信息。通常我只能查看_myURLLoader.data但在这个实例中我需要引用_fileReference.data,它实际上是文件的位图数据。

有人有什么想法吗?

谢谢!

- 埃里克

4 个答案:

答案 0 :(得分:2)

您可以使用http状态告诉Flash上​​传文件时会发生什么。

在php方面,告诉flash没有收到文件我执行以下操作:

if(!isset($_FILES['Filedata']['name']))
{
header("HTTP/1.x 500");
print "RESULTS=FAIL";
exit();
}

如果文件大于我想要的文件:

if(!isset($_FILES['Filedata']['size']) > $maximumuploadsize)
{
header("HTTP/1.x 406");
print "RESULTS=FAIL";
exit();
}

然后在闪存方面,我将设置一个.onHTTPError监听器,例如:

photo.onHTTPError = function(file:FileReference, httpError:Number)
{
switch (httpError)
{
case 500:
// Handle missing file
break;
case 406:
// Handle file too large
break;
}
}

Bill H

答案 1 :(得分:1)

自Flash Player 9.0.28.0(我认为)以来,您可以使用uploadCompleteData事件。在此之前,您必须使用Bill H ^^

描述的技术

答案 2 :(得分:0)

我会检查一些事情。

首先,你的error_reporting设置为什么?您的PHP可能有错误,因为执行停止,所以没有任何输出。

另外,尝试使用error_log()函数并检查日志输出内容。

答案 3 :(得分:0)

完全不同的方法是在您的系统上安装Fiddler。如果您正在处理https流量,您可以使用它来解密所有通过您的网络传输。这不会帮助您的Flex应用程序处理响应,但您将能够在调试/开发过程中观察服务器反馈。