2015-04-02 29 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