我正在使用wordpress cms。我有一個沒有花哨的PHP腳本,它基本上將上傳的圖片的大小調整爲指定的限制,並將調整後的圖片輸出回訪問者的瀏覽器,以便他可以右鍵單擊下載。以下給出的是腳本的相關部分,但如果需要,我會提供完整的代碼。調整圖像大小後強制下載鏈接
ob_start();
imagejpeg($new, null, 100);
echo '<img src="data:image/jpeg;base64,' . base64_encode(ob_get_clean()) . '">';
echo '<br><br>RIGHT CLICK AND SAVE IMAGE<br><br>';
imagedestroy($new);
底線是,我想強制下載鏈接調整 圖像,一旦調整完成。
努力和更新:
First update
:我目前正在經歷this article on forced-download-links上another relevant thread on SO的建議。但是我說:「首先要做的事情是......我們需要在PHP中定義我們文件的路徑(以字符串形式)」。問題是,因爲我不希望任何圖像文件保存在我的服務器上,所以imagejpeg()函數的第二個參數設置爲NULL
。所以我無法定義到我的文件的路徑。或者我可以嗎?我該怎麼做呢。希望它是清楚而簡明的。一個解決方案將是非常好的,如果不是,請給我很好的入門指導。
Second update
:根據以下建議,我取得了一些進展。正如你可以在下面的代碼中看到的,我現在可以保存圖像,但我仍然無法作爲下載提示回顯輸出圖像。請提出更正。
$filename = uniqid();
$file = 'uploads/'.$filename.'.jpeg';
$final_image = imagejpeg($new, $file, 100);
$size = filesize($file);
header("Content-Type: application/force-download; name=\"" . basename($file). "\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile($file);
unlink($file);
Third Update
:發現我可以使用相對路徑,所以我不需要加載的wordpress load.php,相應地改變的代碼。問題依然存在。
第四次更新:嘗試此代碼,建議解決方案在this thread。同樣的結果是,打印出亂碼而不是提供下載鏈接。這令人沮喪,我必須越來越接近:)。
最終更新:有JavaScript解析腳本的輸出,所以我得到所有的亂碼。我現在刪除它一切都沒問題。
只是編輯以 – Sidux
代碼的第二塊打印出亂碼,而不是提供一個鏈接添加其他的解決辦法。仍試圖找出第一個。 – gurung
嘗試使用is_directory進行測試,是否是相對於腳本的路徑?提示:使用__DIR__常量來獲取當前腳本方向 – Sidux