2014-05-14 60 views
2

我需要在網頁上提供一個按鈕,它可以選擇性地導致圖像文件被下載並存儲在客戶機的文件系統中。我想用這種方法從Force a file or image to download using .htaccess 在我的.htaccess中寫道,繼the Apache documentation風格,htaccess:替代使用<if>?

<If "%{QUERY_STRING} =~ /download/"> 
Header set Content-Disposition attachment 
</If> 

我再提供像http://www.example.com/images/image123.jpeg?download=true一個鏈接,而正常工作與我的生產服務器。但是,在我桌面上的Mac開發系統上,使用OS/X的apache或MAMP,它給了我一個error 500。 Apache抱怨它不瞭解<If>聲明,並且serverFault告訴我這是Apache 2.2無法理解的。 OS/X和MAMP都提供了Apache 2.2。

有沒有一種方法可以重寫<if>聲明以在Apache 2.2中產生相同的效果?

我不能只用

<a download="clientFileName.jpg" href="/images/image123.jpeg">Download</a> 

,因爲它沒有在任何IE11或Safari工作。

+0

使用服務器端編程語言。就像PHP –

+0

,我最初成功地將它提供給了PHP,但現在圖像大小已經達到了數百兆字節。 PHP進程被託管服務強行終止運行時間過長。我無法擴展允許的運行時間。 – emrys57

回答

2

你可以先使用重寫規則設置環境變量:

RewriteEngine On 

RewriteCond %{QUERY_STRING} (?:^|&)download=[^&]+ [NC] 
RewriteRule^- [E=DL:1,L] 

然後使用這個環境變量中有條件你的頭設置:

Header set Content-Disposition attachment env=DL 
+1

看起來非常有希望,它似乎工作。現在,只要我能理解語法......!在這裏給我幾分鐘。 – emrys57

+1

是的,在閱讀了足夠的Apache文檔以瞭解您的意思之後,這肯定會起作用。非常感謝! – emrys57

+0

不客氣,很高興它解決了。 – anubhava