2015-04-02 64 views
0

我们的用户可以使用URLRequest POST方法将文件上传到我们的服务器,从Flash AS3到PHP然后到我们的Web服务器。我们最近在我们的LOG文件中发现,有些浏览器将POST请求转换为GET请求,导致文件上传无用。AS3 URLRequest POST有时会变成GET请求

我们不确定这里发生了什么。下面是我们使用的代码: AS3

var request:URLRequest = new URLRequest; 
     request.requestHeaders.push(new URLRequestHeader("pragma", "no-cache")); 
     request = new URLRequest ("http://www.domain.com/uploads/uploader.php"); 
     request.data = variables; 
     request.method = URLRequestMethod.POST; 

PHP

<?php 
$filename = $_FILES['Filedata']['name']; 
if($_POST['count'] == 0){ 
    move_uploaded_file($_FILES['Filedata']['tmp_name'], 'temp/'.$_POST['folderString'].'/dateiVorne/'.$filename); 
} 
if($_POST['count'] == 1){ 
    move_uploaded_file($_FILES['Filedata']['tmp_name'], 'temp/'.$_POST['folderString'].'/dateiHinten/'.$filename); 
} 
?> 

的.htaccess

# Redirect non-www urls to www 
RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.domain\.com 
RewriteRule (.*) http://www.domain.com/$1 [R=301,L] 
+0

为什么你认为这是一个htaccess相关的问题? – starkeen 2015-04-02 14:30:33

+0

我想也许htaccess重写可能会将POST变成GET。只是一个预感,这就是我发布它的原因。 – 2015-04-10 06:37:38

回答

0

原因可能是这样的:

如果Flash Player中运行并且引用的表单没有主体,Flash 即使方法设置为URLRequestMethod.POST的 ,播放器也会自动使用GET操作。出于这个原因,建议始终在 中包含一个“虚拟”主体以确保使用正确的方法。

From documentation

我建议你总是包括像新的URLVariables虚拟URLVariable( “V = 0”);

检查此link

+0

我不太确定虚拟身体是什么样子。这是否是PHP上传器中的正文标签中的简单表单? – 2015-04-10 06:50:37

+0

我有同样的问题,像@BobbySolo什么是虚拟身体,我如何将它添加到我的表单?你的意思是在闪光?要么...? – elahehab 2015-05-29 12:44:21

+0

我已经更新了我的答案。 – 2015-05-29 14:03:20