PHP画布图像上传到远程服务器
PHP canvas image upload to remote server
我正在尝试将画布图像(使用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代码生成elemnt图像。
//上传.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);
?>
服务器端处理程序脚本ie.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编码的图像内容
-
然后,在您以纯文本形式将内容传递到本地服务器之后。
- 在本地服务器上,您不执行任何操作,只需通过CURL以RAW格式传递数据
- 最后,您可以将图像存储在删除服务器上
希望这能有所帮助!
在客户端:
$(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();
}
});
}
});
});
});
在本地服务器上(上传.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;
如果你想让它变得简单,那么1.删除upload.php2.将uploading.php替换为以下代码。
<?php
$img = str_replace('data:image/png;base64,', '', $_POST['img_val']);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = 'test.png';
$success = file_put_contents($file, $data);
?>
相关文章:
- 使用JSP从服务器检索和显示图像
- 将处理后的图像上传到服务器
- 从Web服务器下载图像按钮单击使用JavaScript
- 更改来自第三方服务器的图像
- 如何使用node.js服务器显示图像
- 客户端与服务器端图像压缩
- 无法通过 phantomjs 网络服务器传送图像文件
- 如何从来自不同域或服务器的图像中获取颜色
- 我应该使用哪个库在 Node.JS 上进行服务器端图像处理
- 无法使用 Froala 编辑器删除服务器的图像
- HTML5/JS-在将画布导出为PNG时遇到错误-来自其他服务器的图像
- 可以使用javascript或phonegap以二进制模式从远程服务器读取图像
- 如何在AngularJS上向服务器发送图像
- 从http服务器获取图像并在智能电视中循环显示
- 如何处理从nodejs服务器下载图像
- 通过jQuery AJAX接收图像并显示图像,而不需要服务器对图像进行base64编码
- 从服务器下载图像的JavaScript代码
- 使用ajax调用从php服务器发送图像
- 使用JavaScript生成服务器端图像
- 如何从flask服务器发送图像到前端的javascript显示