2013-06-27 119 views
0

我有一個帶有文本輸入的表單,允許用戶插入圖像的URL並提交表單以將圖像上傳到服務器。因此,將圖像轉換爲PNG,利用哈希重命名並保存在服務器目錄images/ 那代碼上傳:使用PHP創建或覆蓋圖像

if (isset($_POST["cover"])) { 
     imagepng(imagecreatefromstring(file_get_contents($_POST["cover"])), "images/".$hash.".png"); 
    } 

這工作正常,問題是,當用戶試圖從一個新的URL更新圖像。它不起作用,我沒有看到可見的錯誤。

更新圖像的表單有一個輸入value實際轉換和散列圖像在服務器上。如果用戶修改輸入URL並提交更新表單,它會覆蓋服務器上的當前圖像。但這並沒有發生。[編輯,其解決。我正在使用錯誤$變量的哈希。]

現在我有緩存問題。如何在提交表單後顯示更新後的圖像而不必清除瀏覽器緩存?

+0

你的更新代碼應該工作添加時間戳。瀏覽器可能正在顯示圖像的緩存副本。 – Barmar

+0

@Barmar不,它不緩存。我已經清理並重新加載。服務器映像不受更新表單的影響。 –

+1

你如何在更新腳本中設置'$ hash'? – Barmar

回答

0

嘗試強制瀏覽器清除緩存

header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', false); 
header('Pragma: no-cache'); 

或圖像參數

<img src="image.png?<?php echo(time());?>" /> 
+0

主要問題已解決,但現在我有緩存問題。你能給我更多關於如何實現你的答案的細節嗎?謝謝。 –

+0

只有當您使用PHP腳本發送圖像時,「header()」解決方案纔有效,而不是直接以文件形式訪問它們。 – Barmar

+0

http://stackoverflow.com/questions/17332910/how-to-update-a-image-on-server-via-form-and-display-it-after-submission –