我正在尝试将画布图像发送到服务器。
嗨,我认识的每个人都被问了很多。(我之前已经问过一次了)
表单数据也被发送,这用于命名发送到服务器的文件,以便识别谁绘制了图像。
我的网站在这里!
HTML
<form action="PHPtestupload.php" method="post">
Name <input type="text" name="name" value="" style="width:230px; margin-left: -160px; font-size:1em; "/>
Email <input type="email" name="email" value="" style="width:230px; margin-top: 12px; margin-left: -160px; font-size:1em; "/>
<input type="submit" onclick="postImagePlusForm();" value="Submit" style=" opacity:1; -webkit-appearance: none; width:100px; height:50px; margin-left: -50px;">
</form>
JS
// sends image to server
// serialize your canvas
var dataURL=document.getElementById('colors_sketch').toDataURL(image/png);
// serialize your form
var str = $("form").serializeArray();
// wrap both in an object
var package={ formData: str, imageDataURL: dataURL }
// ajax it
postImagePlusForm();
function postImagePlusForm(){
$.ajax({
type: "POST",
url: "PHPtestupload.php",
data: package,
success: function(value) {
// ...we have success!
}
});
}
PHP
if ( isset($_POST["imageDataURL"]) && !empty($_POST["imageDataURL"]) ) {
// create $dataURL
$dataURL = $_POST["imageDataURL"];
// Extract base64 data
// we have an unneeded header, zap it
$parts = explode(',', $dataURL);
$data = $parts[1];
// Decode
$data = base64_decode($data);
// Save
$fp = fopen('newImage.png', 'w');
fwrite($fp, $data);
fclose($fp);
if ( isset($_POST["formData"]) && !empty($_POST["formData"]) ) {
$formData = $_POST['formData'];
foreach ($formValue as $x) {
// do whatever you need to do with each form value ($x)
}
在网页上使用不同 Javascript 的替代 PHP,这里有半工作站点!
我认为服务器会关闭 PHP,因为它在本地运行,但在联机时不起作用。它会生成大量错误日志。
$data = file_get_contents('php://input');
$canvasImg = imagecreatefrompng($data);
$width = imagesx($canvasImg);
$height = imagesy($canvasImg);
$outImg = imagecreatetruecolor($width, $height);
$color = imagecolorallocatealpha($outImg, 255, 255, 255, 127);
imagefill($outImg, 0, 0, $color);
imagecopy($outImg, $canvasImg, 0, 0, 0, 0, $width, $height);
imagepng($outImg, 'test.png');
$name = $_POST['name'];
$email = $_POST['email'];
$target = 'test.png';
$newName = $name . $email;
rename($target, $newName);