2013-03-13 62 views
0

的JavaScript:阿賈克斯發送POST和發送帆布

var username = 'sami'; 
var myImage = canvas.toDataURL("image/png"); 
var ajax = new XMLHttpRequest(); 
ajax.open("POST", "Pic.php", false); 
ajax.setRequestHeader('Content-Type', 'application/upload'); 
ajax.send(myImage); 
ajax.send("q=" + encodeURIComponent(username)); 

PHP:

<? php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) { 
    $user = $_POST['q']; 
    $comp = $user.".png"; 
    $imageData = $GLOBALS['HTTP_RAW_POST_DATA']; 
    $filteredData = substr($imageData, strpos($imageData, ",") + 1); 
    $unencodedData = base64_decode($filteredData); 
    $fp = fopen($comp, 'wb'); 
    fwrite($fp, $unencodedData); 
    fclose($fp); 
} ?> 

這是代碼,問題是,我無法用後,得到了用戶的時候圖像保存它的「.png」只...

回答

0

只發送一次您的請求,並將兩個變量包裝在同一個發送中。 發送兩次不同的變量是沒有意義的...

您還應該檢查變量是否存在,serverside,isset($ _ POST ['q'])。

另一種解決方案可能是一個GET變量添加用戶如URL:「Pic.php Q =」 +用戶名和辦理的用戶名一個GET變量,而不是

0

像apelsinapa說,你要打包在一起:

ajax.send("img=" + myImage + "&user=" + user); 

這當然就意味着你無效「應用程序/上傳」,因爲現在你又回到了形式編碼。

因此,再次提到,如果允許查詢字符串($_GET)參數表示用戶或首選文件名或其他,則可以保持應用程序上載,並且也可以使用文件名。

ajax.open("POST", "Pic.php?user=" + user + "&fname=" + filename, true); 
// leave headers as you have set them 
// event-handlers here 
ajax.send(myImage);