Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在服务器上保存div内容(img)_Javascript_Php_Html - Fatal编程技术网

Javascript 如何在服务器上保存div内容(img)

Javascript 如何在服务器上保存div内容(img),javascript,php,html,Javascript,Php,Html,我正在开发一个web应用程序,用户可以裁剪图像。用户必须能够通过电子邮件发送URL,以便其他人可以查看裁剪后的图像。这意味着每个裁剪的图像必须存储在服务器上,以便URL永远不会消失。我的HTML中包含裁剪图像的部分是: <div class="contain" id="myDiv"> <img src="" id="croppedImage"> </div> 裁剪函数工作正常,它是用JavaScript编写的。我正在使用PHP解析DOM,提取图像

我正在开发一个web应用程序,用户可以裁剪图像。用户必须能够通过电子邮件发送URL,以便其他人可以查看裁剪后的图像。这意味着每个裁剪的图像必须存储在服务器上,以便URL永远不会消失。我的HTML中包含裁剪图像的部分是:

<div class="contain" id="myDiv">
    <img src="" id="croppedImage">
</div>

裁剪函数工作正常,它是用JavaScript编写的。我正在使用PHP解析DOM,提取图像并将其保存在服务器上,但它不起作用。任何帮助都将不胜感激

<?php
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$divContent = $xpath->query('//img[id="croppedImage"]');

$my_server_img = $divContent;
$img = imagecreatefromjpeg($my_server_img);
$path = 'images_saved/';
imagejpeg($img, $path);
?>

在查看代码并签出正在使用的函数后,我查看了这一部分:
$xpath->query('//img[id=“crappedimage”]')
与相比,您可以看到该函数返回一个
DOMNodeList
元素(即使没有找到任何内容,它也将返回没有子对象的对象。然后,您将获取该对象并将其传递给
imagecreatefromjpeg($filename)接受字符串作为$filename而不是对象的
。而且您的xpath选择器错误,您需要在
id
前面加上
@
前缀,如下所示:
$xpath->query('//img[@id=“cropedimage”]);

因此,这里有一些代码将获取一个
属性并保存它。您需要确保正在下载的图像的src是一个
jpg
文件,否则
imagecreatefromjpeg()
将失败。您可以使用CURL或其他方法下载图像(这样您也可以获得png图像)但这超出了这个答案的范围

$dom = new DOMDocument();
$dom->loadHTML('
    <html>
        <img src="http://images.freepicturesweb.com/img1/18/02/13.jpg" id="croppedImage2"/>
        <img src="http://images.freepicturesweb.com/img1/18/02/14.jpg" id="croppedImage3"/>
    </html>
');
$xpath = new DOMXPath($dom);
$imageElements = $xpath->query('//img[@id="croppedImage2"]');

// make sure $imageElements isn't empty
if($imageElements->length) {
    // grab first item in list (should only be one)
    /** @var DOMElement $imageElement */
    $imageElement = $imageElements->item(0);
    // get the src attribute off the <img>
    $src = $imageElement->getAttribute('src');
    // download and create image resource based off $src
    $img = imagecreatefromjpeg($src);
    // save image with random name to current directory
    $filename =  __DIR__.'/'.base_convert(sha1(uniqid(mt_rand(), true)), 16, 36).'.jpg';
    imagejpeg($img, $filename);
    echo "File saved to: ".$filename;
}
$dom=newdomdocument();
$dom->loadHTML('
');
$xpath=newdomxpath($dom);
$imageElements=$xpath->query('//img[@id=“crappedimage2”]');
//确保$imageElements不是空的
如果($imageElements->length){
//抓取列表中的第一项(应仅为一项)
/**@var DOMElement$imageElement*/
$imageElement=$imageElements->item(0);
//从getAttribute('src')中获取src属性;
//下载并创建基于$src的图像资源
$img=imagecreatefromjpeg($src);
//使用随机名称将图像保存到当前目录
$filename=\\\\\\\\\\\'/'.base\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
imagejpeg($img,$filename);
echo“文件保存到:”.$filename;
}

还应注意的是,您正在将一个变量分配给一个变量。这样做可能会很快造成混乱。如果您希望一个变量被称为其他变量,请在初始化它时设置名称,而不是将它分配给另一个具有所需名称的变量(我猜这只是您在尝试一些代码后留下的东西,但仍然值得一提)。

什么是“它不起作用”意思是?想详细说明吗?@Charlotte当然,当我检查“images_saved”目录时,它仍然是空的。我希望看到存储在那里的裁剪图像。这为我回答了很多问题。非常感谢。这实际上澄清了我的很多疑问。当然!只要记住,当你需要有关函数的任何信息时,php.net是天赐之物。