我想知道是否有人可以帮助我。
我正在使用这个页面来允许用户查看他们上传的图片库。
上传后,图像保存在此文件路径UploadedFiles/userid/locationid/image
中,图像的详细信息(即名称、描述等)保存在一个名为 XML 的文件中,该文件files.xml
位于与图像相同的目录中。其摘录如下所示:
<?xml version="1.0" encoding="utf-8" ?>
- <files>
<file name="AC-0003749-Clark_145520.jpg" source="AC-0003749-Clark_145520.jpg" size="3873" originalname="AC-0003749-Clark_145520.jpg" description="No description provided" userid="1" locationid="1" />
</files>
画廊通过每张图片下方的图标为用户提供了额外的功能,可以删除每张图片。这是通过以下代码完成的:
图标点击事件
<script type="text/javascript">
Galleria.ready(function() {
this.$('thumblink').click();
$(".galleria-image").append(
"<span class='btn-delete ui-icon ui-icon-trash'></span>");
$(".btn-delete").live("click", function(){
var img = $(this).closest(".galleria-image").find("img");
// send the AJAX request
$.ajax({
url : 'delete.php',
type : 'post',
data : { image : img.attr('src') },
success : function(){
alert('Deleting image... ');
img.parent().fadeOut('slow');
}
});
return false;
});
});
</script>
delete.php - 修改后的代码
<?php
if (!empty($_POST)) {
$image = $_POST['image'];
if (file_exists($image)) {
unlink($image);
}
}
$doc = new DOMDocument;
$doc->load('files.xml');
$thedocument = $doc->documentElement;
$list = $thedocument->getElementsByTagName('files');
$nodeToRemove = null;
foreach ($list as $domElement){
if ($attrValue == '$image') { $domElement->parentNode->removeChild($domElement); }
}
if ($nodeToRemove != null)
$thedocument->removeChild($nodeToRemove);
echo $doc->saveXML();
?>
物理图像的删除工作正常,但我很难弄清楚如何删除相关的子节点。虽然我没有收到错误消息,但节点没有被删除。我从这个站点收到了一些关于如何去做的指导,即通过 PHP XML DOM,但老实说,我读的越多,我就越困惑。我似乎无法理解它。
我只是想知道是否有人可以看看这个,让我知道我哪里出错了。
非常感谢和亲切的问候