我正在尝试将一个canvas图像(使用html2canvas)上传到远程服务器,文件名已经创建,但大小为0字节。
以上Jquery代码生成图像元素。
// Uploading.php
$(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);
?>
请帮我,我已经尝试了很多方法来保存,但都失败了。