我正在尝试将画布图像(使用html2canvas)上传到远程服务器,正在创建文件名,但大小为0字节。
$(function click1() {
$("#share").click(function() {
$("#load").show();
html2canvas($("#backdrop1"), {
onrendered: function(canvas) {
var data1 = canvas.toDataURL('image/png');
//display 64bit image
var image = new Image();
image.src = data1;
$.ajax({
url: 'uploading.php',
type: 'post',
data: {img_val: data1},
datatype: 'html',
success: function fbs_click1() {
$("#load").hide();
}
});
}
});
});
});
上面的Jquery代码生成了无意义的图像。
//Uploading.php
<?php
$imaged = $_POST['img_val'];
$filename = $_FILES[$imaged]['tmp_name'];
$handle = fopen($filename, "r");
$data = fread($handle,filesize($filename));
$POST_DATA = array(
'img_value' => base64_encode($data)
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/upload.php');
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $POST_DATA);
$response = curl_exec($curl);
curl_close ($curl);
?>
和服务器端的处理程序脚本即。upload.php
<?php
$img = $_REQUEST['img_value'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = 'test.png';
$success = file_put_contents($file, $data);
?>
请帮助我,我已经尝试了多种保存方法,但是我没有做到。
这是您的代码AJAX
。您应该将接收canvas
到的图像数据直接传递到服务器。
在浏览器中,您收到base64编码的图像内容
然后,将该内容以纯文本格式传递到本地服务器。
希望这可以帮助!
在客户端:
$(function click1() {
$("#share").click(function() {
$("#load").show();
html2canvas($("#backdrop1"), {
onrendered: function(canvas) {
var data1 = canvas.toDataURL("image/png");
//display 64bit image
var image = new Image();
image.src = data1;
$.ajax({
url: 'uploading.php',
type: 'post',
data: data1,
dataType: 'text',
contentType: "application/upload",
success: function fbs_click1() {
$("#load").hide();
}
});
}
});
});
});
在您的本地服务器(uploading.php)上:
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$imageData = $GLOBALS['HTTP_RAW_POST_DATA'];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://example.com/upload.php" );
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $imageData);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result=curl_exec ($curl);
echo $result;
curl_close ($curl);
?>
在您的删除服务器(upload.php)上:
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$upload_dir = "PATH_TO_UPLOAD_DIRECTORY/";
$final_img = $upload_dir."my_upload_image.png";
if(file_put_contents($final_img, $unencodedData)) {
echo "SUCCESS";
}
else {
echo 'ERROR';
}
}
else
{
echo "ERROR";
}
exit;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句