JavaScript的:
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 :(得分:0)
仅发送一次请求并将两个变量打包在同一个发送中。 用不同的变量发送两次是没有意义的......
您还应检查变量是否存在,服务器端,是否设置($ _ POST ['q'])。
另一个解决方案可能是将用户作为GET变量添加到网址中:“Pic.php?q =”+ username并为用户名处理GET变量
答案 1 :(得分:0)
就像apelsinapa说的那样,你必须将它们打包在一起:
ajax.send("img=" + myImage + "&user=" + user);
这当然意味着您使“应用程序/上传”无效,因为现在您又回到了表单编码。
同样,如上所述,如果您允许表示用户或首选文件名的查询字符串($_GET
)参数,或者其他任何内容,您可以保持应用程序上传,并且还具有文件名。< / p>
ajax.open("POST", "Pic.php?user=" + user + "&fname=" + filename, true);
// leave headers as you have set them
// event-handlers here
ajax.send(myImage);