Javascript 将上载的图像保存在画布中到服务器
我们正在从json获取掩码图像并显示在页面中。一旦我们点击蒙版,我们将显示文件上传对话框,以便用户上传图像 要求:Javascript 将上载的图像保存在画布中到服务器,javascript,jquery,html5-canvas,Javascript,Jquery,Html5 Canvas,我们正在从json获取掩码图像并显示在页面中。一旦我们点击蒙版,我们将显示文件上传对话框,以便用户上传图像 要求: function test(){ var canvas = document.getElementById("cvs"); var dataURL = canvas.toDataURL(); $.ajax({ type: "POST", url: "upload.php", data: { imgBase64: dataURL } }).done(
function test(){
var canvas = document.getElementById("cvs");
var dataURL = canvas.toDataURL();
$.ajax({
type: "POST",
url: "upload.php",
data: {
imgBase64: dataURL
}
}).done(function(o) {
console.log('saved');
});
}
<?php
define('UPLOAD_DIR', 'uploads/');
imgBase64 = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
一旦用户单击“保存”按钮,我想将该图像上传到服务器。。。。但现在它没有在服务器中保存映像
代码笔:
脚本:
function test(){
var canvas = document.getElementById("cvs");
var dataURL = canvas.toDataURL();
$.ajax({
type: "POST",
url: "upload.php",
data: {
imgBase64: dataURL
}
}).done(function(o) {
console.log('saved');
});
}
<?php
define('UPLOAD_DIR', 'uploads/');
imgBase64 = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
Upload.php:
function test(){
var canvas = document.getElementById("cvs");
var dataURL = canvas.toDataURL();
$.ajax({
type: "POST",
url: "upload.php",
data: {
imgBase64: dataURL
}
}).done(function(o) {
console.log('saved');
});
}
<?php
define('UPLOAD_DIR', 'uploads/');
imgBase64 = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>
将图像保存到服务器
主要问题是这里需要一些服务器端语言。。。当然,您可以(ajax)发布base64,但是服务器上的某些东西必须知道如何处理它接收的POST(ed)数据
下面是我在上一个项目中使用的PHP(服务器端代码),它允许用户上传自己的化身图像
在我的用例中,我让ajax POST发送了3件事情:
if( isset($_POST['imgBase64']) && isset($_POST['imgFileName']) &&
isset($_POST['imgFileType']) ){
$fname = filter_input(INPUT_POST, 'imgFileName'); // THE FILENAME THE USER CHOSE IS RECEIVED VIA POST
$img = filter_input(INPUT_POST, 'imgBase64'); // THE BASE64 ENCODING RECEIVED VIA POST
$imgtype = filter_input(INPUT_POST, 'imgFileType'); // THE FILE TYPE / EXTENSION IS RECEIVED VIA POST
// STRIP OFF THE BEGINNING OF THE BASE64 DATA, BUT DEPENDS ON THE IMAGE TYPE.
// I COULD HAVE SIMPLIFIED THIS BUT USED IF STATEMENTS.
if ( $imgtype === 'png'){
$img = str_replace('data:image/png;base64,', '', $img);
};
if ( $imgtype === 'jpg' || $imgtype === 'jpeg'){
$img = str_replace('data:image/jpeg;base64,', '', $img);
};
if ( $imgtype === 'gif'){
$img = str_replace('data:image/gif;base64,', '', $img);
};
// REPLACE ALL SPACES IN THE IMAGE DATA WITH PLUS SYMBOL
$img = str_replace(' ', '+', $img);
// CONVERT THE DATA FROM BASE64 ENCODING
$img = base64_decode($img);
// SAVE THE FILE
file_put_contents('...path.../'.$fname, $img);
echo '{"error":false, "message":"Image has been saved successfully!","data":[{"fileName": "'.$fname.'"}]}';
}
主要问题是这里需要一些服务器端语言。。。当然,您可以(ajax)发布base64,但是服务器上的某些东西必须知道如何处理它接收的POST(ed)数据 下面是我在上一个项目中使用的PHP(服务器端代码),它允许用户上传自己的化身图像 在我的用例中,我让ajax POST发送了3件事情:
if( isset($_POST['imgBase64']) && isset($_POST['imgFileName']) &&
isset($_POST['imgFileType']) ){
$fname = filter_input(INPUT_POST, 'imgFileName'); // THE FILENAME THE USER CHOSE IS RECEIVED VIA POST
$img = filter_input(INPUT_POST, 'imgBase64'); // THE BASE64 ENCODING RECEIVED VIA POST
$imgtype = filter_input(INPUT_POST, 'imgFileType'); // THE FILE TYPE / EXTENSION IS RECEIVED VIA POST
// STRIP OFF THE BEGINNING OF THE BASE64 DATA, BUT DEPENDS ON THE IMAGE TYPE.
// I COULD HAVE SIMPLIFIED THIS BUT USED IF STATEMENTS.
if ( $imgtype === 'png'){
$img = str_replace('data:image/png;base64,', '', $img);
};
if ( $imgtype === 'jpg' || $imgtype === 'jpeg'){
$img = str_replace('data:image/jpeg;base64,', '', $img);
};
if ( $imgtype === 'gif'){
$img = str_replace('data:image/gif;base64,', '', $img);
};
// REPLACE ALL SPACES IN THE IMAGE DATA WITH PLUS SYMBOL
$img = str_replace(' ', '+', $img);
// CONVERT THE DATA FROM BASE64 ENCODING
$img = base64_decode($img);
// SAVE THE FILE
file_put_contents('...path.../'.$fname, $img);
echo '{"error":false, "message":"Image has been saved successfully!","data":[{"fileName": "'.$fname.'"}]}';
}
我第一眼看到的一个问题是在您的.php文件中。。。imgBase64应该是$imgBase64。。。我注意到,在底层php代码中,您似乎没有在任何地方使用该变量。在这种情况下,对于PHP服务器端代码,我经常会检查我试图使用的所有“部件”,以确保它们都正常工作并就位——将每个部件都返回检查,然后我一步一步地返回逻辑。@tamak感谢您的建议,不使用PHP是否可以在服务器中保存上传的图像?我们可以只使用html5、js或jquery吗?@VickeyColor不,javascript和html不是服务器端语言。您需要一种服务器端语言才能发布到服务器。@vickeycolors-我有一个一两年前创建的工作示例-今天晚些时候我将尝试将其挖掘出来,向您展示基本知识,并为您提供一个指向github repo的链接。我第一眼看到的一个问题是在您的.php文件中。。。imgBase64应该是$imgBase64。。。我注意到,在底层php代码中,您似乎没有在任何地方使用该变量。在这种情况下,对于PHP服务器端代码,我经常会检查我试图使用的所有“部件”,以确保它们都正常工作并就位——将每个部件都返回检查,然后我一步一步地返回逻辑。@tamak感谢您的建议,不使用PHP是否可以在服务器中保存上传的图像?我们可以只使用html5、js或jquery吗?@VickeyColor不,javascript和html不是服务器端语言。您需要一种服务器端语言才能发布到服务器。@vickeycolors-我有一个一两年前创建的工作示例-今天晚些时候我会尝试将其挖掘出来,向您展示基本知识,并为您提供一个指向github repo的链接。谢谢,最初我用示例html代码尝试了您的代码,但图像没有上载到服务器,此外,即使我已经在php中添加了错误报告代码,我也没有收到任何错误…谢谢,您的代码运行良好,我可以在服务器中保存图像,但保存的图像不显示,请帮助我:@VickeyColor-我刚刚更新了上面的源代码答案。我已经确认它可以在你的服务器上运行,并向你发送了一封电子邮件。您好,它将上载的图像与掩码图像一起保存,但我们需要的是只保存上载的图像,请帮助我,因为…谢谢,最初我用示例html代码尝试了您的代码,但图像没有上载到服务器,此外,即使我已经在php中添加了错误报告代码,我也没有收到任何错误…谢谢,您的代码运行良好,我可以在服务器中保存图像,但保存的图像不显示,请帮助我:@VickeyColor-我刚刚更新了上面的源代码答案。我得了c