【问题标题】:can't unlink image which is in url format无法取消链接 url 格式的图像
【发布时间】:2018-07-31 10:58:47
【问题描述】:

php 正在获取以下格式的图像,同时回显$_POST['img']

http://localhost/uploads/images/1533033949-8.jpg

但是为什么取消链接不起作用 -

// Get src.
$img = $_POST["img"];

// Check if file exists.
if (file_exists(getcwd() . $img)) {
  // Delete file.
  unlink(getcwd() . $img);
  echo "Deleted";
}

我试过直接测试,但是不行

unlink($img)

【问题讨论】:

  • 文件是否存在于getcwd() . $img ?你有没有把它打印出来看看它是什么样子的?您/您的脚本/您的服务器是否有权取消链接文件?
  • unlink 适用于文件系统,不适用于 HTTP URL。将http://localhost/uploads/images/1533033949-8.jpg 附加到当前工作目录不太可能为您提供正确的文件系统路径。
  • getcwd() php.net/manual/en/function.getcwd.php 上的手册明确声明:“成功返回当前工作目录,失败返回FALSE ."*,而不是 URL。加上The above example will output something similar to: /home/didou /home/didou/cvs。所以看看你现在得到的 URL;不一样吧?你去吧,眨眼
  • 使用substr, strlen转换变量中的url信息有效。

标签: php file unlink getcwd


【解决方案1】:

unlink 适用于文件系统,不适用于 HTTP URL。并附加

@CBroe 是正确的

首先在您的实时服务器上获取基本路径 或手动指定基本路径,如下例所示

$base_directory = '/home/myuser/';

然后取消链接您需要删除的文件。

if(unlink($base_directory))
    echo "File has been Deleted.";

希望对你有帮助。

【讨论】:

  • 谢谢,但它不起作用,在尝试了很多方法后,我在 php substr, strlen 函数的帮助下解决了将 url 信息存储为变量和路径的问题,我已经在答案中发布了
【解决方案2】:

最后我解决了将 url 信息存储为变量和 php substrstrlen 函数的问题。

$img=$_POST['img'];
$len = strlen("http://localhost/uploads/");
$new_path = substr($img, $len, strlen($img)-$len); 
if(unlink($new_path)){
    echo "Deleted";
}
else{
    echo "Fail";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2019-09-17
    相关资源
    最近更新 更多