“是否有类似的类型方法可以获取 URL 并下载项目文件夹中的图像?”问题的答案?是:
没有。
原因是任何包含 Javascript 的网页都不会在存储它的服务器上执行:而是将一个副本发送到用户浏览器,该浏览器在用户 PC 上运行它;此副本不知道服务器上的项目文件夹。在服务器上保存用户PC本地创建的图像的唯一方法是将图像上传到服务器,例如.PHP脚本等待数据;这样的 PHP 脚本在服务器上运行,因此它可以将接收到的图像存储在项目文件夹中。
这个 javascript sn-p 将图像数据发送到远程 PHP 文件:
$.post("http://www.example.com/image-saver.php",
{
imgdata: imgData,
pass: "mypass"
}
但是在调用脚本的那一刻,图像必须已经存在于页面中,这需要一点时间来加载,因此上面的脚本必须包含在一个只有在页面完成加载后才会激活的函数中:
window.onload = function() {
$.post("http://www.example.com/image-saver.php",
{
imgdata: imgData,
pass: "mypass"
}
};
例如,“imgData”可以通过将包含在包含图像的画布中的数据转换为 URL 来创建:
imgData = canvas.toDataURL('image/png');
因此,“php”和“toDataURL”特定情况下的完整来源将是:
<script src="jquery.js"></script>
<script>
window.onload = function() {
imgData = canvas.toDataURL('image/png');
$.post("http://www.example.com/image-saver.php",
{
imgdata: imgData,
pass: "mypass"
}
};
</script>
这些数据将被服务器上的 image-saver.php 脚本读取:
$data = $_POST['imgdata'];
$pass = $_POST['pass'];
if ($pass == "mypass") {
$img = imagecreatefromstring(base64_decode(substr($data,strpos($data,',')+1)));
$result = imagepng($img,"image.png");
die($img);
echo "Result: " . $result . "<br>";
} else {
echo "Nice attempt.";
}