PHP:: 如何在读取文件后从服务器删除文件。 Unlink() 之前执行

发布于 2024-11-02 16:22:21 字数 96 浏览 5 评论 0原文

我试图在第一次显示后从服务器删除图片(.jpg)。 但文件在显示之前就被删除了(unlink();)。我已经尝试过 sleep() 但这只会延迟加载,并且在显示之前删除所有文件。

I'm trying to delete a picture (.jpg) from server after the first time showed.
But the file is deleted (unlink();) before showed. I've already tried with sleep() but this only delay the loading and after all the file is deleted before showed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

单身狗的梦 2024-11-09 16:22:21

您可以使用 mod_rewrite 将 jpg 请求重定向到脚本,该脚本将图像加载到内存中,删除文件,然后提供图像。 IMO,这是最简单、最容易的解决方案。下面的不安全示例...

示例 .htaccess 文件:

# Turn on URL rewriting
RewriteEngine On

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

index.php

<?php

$image_file = $_SERVER['PATH_INFO'];

// clean data, strip current/parent directory to block transversal, etc...

if (file_exists('images/' . $image_file))
{
    $image_data = file_get_contents('images/' . $image_file);

    // determine image mimetype using phps mimetype functions

    unlink('images/' . $image_file);

    header('Content-Type: image/jpeg');

    echo $image_data;
}

You could use mod_rewrite to redirect jpg requests to a script that loads the image into memory, deletes the file, then serves up the image. IMO, this is the simplest and easiest solution. Unsafe example below...

Example .htaccess file:

# Turn on URL rewriting
RewriteEngine On

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

index.php

<?php

$image_file = $_SERVER['PATH_INFO'];

// clean data, strip current/parent directory to block transversal, etc...

if (file_exists('images/' . $image_file))
{
    $image_data = file_get_contents('images/' . $image_file);

    // determine image mimetype using phps mimetype functions

    unlink('images/' . $image_file);

    header('Content-Type: image/jpeg');

    echo $image_data;
}
终难遇 2024-11-09 16:22:21
  • 将文件中的图像内容复制到内存中;
  • 删除镜像文件;
  • 将原始内容从内存流式传输到输出。

恐怕我能做的就是尽量避免这种含糊不清的情况。

  • Copy the image contents from the file into memory;
  • Delete the image file;
  • Stream the original contents from memory to output.

Best I can do with the vagueness, I'm afraid.

心病无药医 2024-11-09 16:22:21

这是因为所有 PHP 在渲染输出之前都在堆栈中执行。您需要设置一个函数来标记文件以在下一页加载时删除。

或者您可以设置一些 AJAX 在文档加载后删除图片。

This is because all PHP is executed in the stack prior to rendering the output. You will need to set up a function to flag the file for deletion on the next page load.

OR you can set up some AJAX to delete the picture after the document has loaded.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文