2011-04-22 94 views
5

我想在第一次顯示後從服務器刪除圖片(.jpg)。 但顯示之前文件被刪除(unlink();)。我已經嘗試過使用sleep(),但這隻會延遲加載,並且在顯示之前所有文件都被刪除。PHP ::如何讀取後從服務器上刪除文件。取消鏈接()之前執行

+1

如果您發佈了您的相關代碼,這很可能是一個簡單的修復。沒有看到你的代碼,你可能不會得到任何(有用的)答案。 – 2011-04-22 23:35:10

回答

0

這是因爲所有PHP都在渲染輸出之前在堆棧中執行。您需要設置一個函數來標記文件以在下一頁加載時刪除。

或者你可以設置一些AJAX刪除圖片在文件加載後。

+0

輸出呈現_during_ PHP執行。這就是PHP腳本所做的。 – 2011-04-23 04:04:27

6

您可以使用mod_rewrite將jpg請求重定向到將圖像加載到內存中的腳本,刪除該文件,然後提供圖像。國際海事組織,這是最簡單和最簡單的解決方案。下面不安全示例...

例.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; 
} 
+1

我不相信OP會在首次查看後刪除_all_ JPG圖像。另外,你的'.htaccess'似乎與問題/答案完全無關? – 2011-04-23 04:05:34

+0

@Tomalak,我假設OP想要一次性視圖圖像腳本。上面的代碼只是一個例子,他需要修改它以反映正確的圖像路徑,添加mimetype檢測等。它使用htaccess實質上通過php腳本代理請求。該腳本返回圖像並刪除它(某些圖像主機具有單視圖,如果您想與單人共享圖像,並且不希望它成爲互聯網上的永久性固定裝置,則該圖像有用)。 – 2011-04-25 14:22:39

+1

也許答案應該包括,作爲一個警告,在他回來之前抱怨我們刪除了他所有的照片:) – 2011-04-25 23:08:35

2
  • 複製從文件到存儲器中的圖像內容;
  • 刪除圖像文件;
  • 從存儲器輸出原始內容。

我可以做的最好的模糊,恐怕。

相關問題