从服务器删除图像文件

问题描述 投票:0回答:3

我想知道是否有人可以帮助我。

我整理了this页面,允许用户以图库格式查看他们上传的图像。

我现在想为每个图像添加删除功能。我已经创建了按钮及其背后的 Javascript,但我真的不确定如何将“按钮单击”与文件的实际物理删除链接起来。

图像未存储在数据库中,而是位于我的服务器上的两个文件夹位置,结构如下:

UploadedFiles/username/locationid/imagename

UploadedFiles/username/locationid/Thumbnails/imagename

我对 PHP 比较陌生,现在已经达到了我的知识极限,但我当然愿意学习。从我读过的文档中,我认为我正确地说

unlink
方法是正确使用的命令?

但我发现真正困难的是告诉代码找到与当前

username
locationid
匹配的
username
locationid
文件夹的文件夹,然后删除与
$source
名称匹配的文件变量。

我只是想知道是否有人可以提供一些指导,告诉我如何解决这个问题。

非常感谢和亲切的问候

php delete-file
3个回答
7
投票

如果您可以将用户名、locationid 和 imagename 变量传递给脚本,则可以使用

unlink()
:

删除文件
$path = 'UploadedFiles/' . $username . '/' . $locationid . '/';

unlink( $path . $imagename );
unlink( $path . 'Thumbnails/' . $imagename );

因为您正在与文件系统交互,所以您需要确保并清理变量(防止有人使用 ../../../ 访问文件系统中不需要的部分)。

$username = str_replace( array( '..', '/', '\\', ':' ), '', $username );
$imagename = str_replace( array( '..', '/', '\\', ':' ), '', $imagename );
$locationid= str_replace( array( '..', '/', '\\', ':' ), '', $locationid );

0
投票

显然你的javascript(客户端)必须调用URL(服务器端)来删除用户选择的图片。我建议现在你静态地进行(如果以后你想转向更动态的东西,那么转换为 ajax 的步骤相当小。

正如Set Sail Media所说,当您点击删除按钮时,您必须将用户名和locationID传递到您的服务器。一种方法是:

在 HTML/javascript 中渲染图库时,对于每张图片,其下方都有一个包含所需信息的图片,提交按钮将简单地从您的服务器调用删除脚本。您可以执行的表格示例是:

    <form name="deleteImageX" method="GET" target="your.server.org/deleteImage.php">
        <input type="hidden" name="userName" value="theUserNameAssociatedWithThePicture" />
        <input type="hidden" name="locationId" value="locationOfThePicture" />
        <input type="submit" value="delete"/>
    </form>

此表单会将所需的值存储在隐藏字段中,这些字段不会显示在网页上,但按下提交按钮时仍会发送到服务器。

(对于这个小故事,这里使用的方法是 GET,因为 AFAIK HTML 不支持 DELETE 方法(这适合我们的情况)。

GET 方法将调用脚本“your.server.org/deleteImage.php”。在此脚本中,您将获得使用 $_GET['username'] 和 $_GET['locationId'] 变量删除图像所需的所有信息(用户名/locationId)。然后,正如您提到的,您将需要使用 unlink 方法来实际从服务器删除文件。

最后,完成此操作后,您需要重定向 php 脚本,以便在删除图像后再次显示图库(例如)。如果你有某种模板引擎,这可以通过调用脚本来完成,或者通过调用 php 的“header”函数来完成。

我希望这个流程符合您的预期,并且希望我对您有所帮助。

问候,


0
投票

$path = 'UploadedFiles/' . $username . '/' . $locationid . '/';

unlink( $path . $IMG-20231104-WA0071.jpg );
unlink( $path . 'Thumbnails/' . $IMG-20231104-WA0071.jpg);
© www.soinside.com 2019 - 2024. All rights reserved.