iT邦幫忙

0

php 下載圖片來自 url ,不存到本端,直接從瀏覽器下載?

我有找到一個代碼是 file_put_contents

但是他是下載到指定的文件夾

但我現在想要實現的是點擊下載後(根據一串 url) 且直接在「瀏覽器下載」保存

請問這要怎麼實現呢?

kksugsay iT邦新手 3 級 ‧ 2018-06-11 17:34:24 檢舉
感覺像木馬?
純真的人 iT邦研究生 3 級 ‧ 2018-06-11 17:43:33 檢舉
瀏覽器應該不給控制吧...
0
wiseguy
iT邦超人 1 級 ‧ 2018-06-12 11:58:23
最佳解答

第一種:
直接在前台以 js 給出 下載 的連結,這樣就佔不到 server 頻寬。

第二種:
後台 php 使用 http header 轉向,只佔微不足到的頻寬。

<?php
$url ='https://ithelp.ithome.com.tw/storage/image/ironman9thsidebar.png';
header('Location: '.$url);
?>

第三種:
後台 php 抓過來再送到前台:

<?php
$url ='https://ithelp.ithome.com.tw/storage/image/ironman9thsidebar.png';
$filename = basename($url);
header('Content-type:application/force-download');
header('Content-Disposition:attachment;filename='.$filename);
readfile($url);
?>

第三種顯得多餘又浪費頻寬。除非要加料再送給user,否則很少有人會這麼搞。

1
r567tw
iT邦新手 5 級 ‧ 2018-06-11 18:16:07

有點突然想到....
不知道這是不是你要的?
a > download 屬性
https://www.w3schools.com/tags/att_a_download.asp

2
freessaint
iT邦新手 5 級 ‧ 2018-06-11 22:47:52

有幾種做法
像是
header('Content-type:application/force-download');

或者html的屬性
<a href="/images/test.jpg" download="test">

0
浩瀚星空
iT邦新手 2 級 ‧ 2018-06-12 10:53:03

他要的是遠端圖片下載,且不經由本端伺服器儲存的方式來做下載的。

這如果在php使用的話,一般是可以搭配fopen或是curl的方式。
讀取後再用echo輸出再用如上的
header('Content-type:application/force-download');
的標頭宣告處理。

其實我會比較建議用一下file_put_contents跟readfile。檔案還是儲存到本機後,下載操作才會比較單純。
畢竟~~~你不儲存的話。那就只剩下參數定義的方式了。一方面會吃ram的用量,另一方面則有可能碰上大檔無法讀取的問題。

我要發表回答

立即登入回答