一般在我們上傳完資源文件之后,為了避免文件名沖突,會將文件名改成毫無意義的一段字符。這個字符,可能是MD5產生的,或者是其他方式產生的字符串。這時候,下載的時候,默認保存的文件名會是這段毫無意義的文件名(圖1)。
其實,nginx是支持下載時重命名的,讓文件名更加友好。
nginx也很容易配置:只要加入以下幾行即可:
{
if ($request_uri ~* ^.*\/(.*)\.(doc|txt|jar|zip|apk)(\?n=([^&]+))$) {
add_header Content-Disposition "attachment;filename=$arg_n.$2";
}
log_not_found off;
expires 30d;
break;
}
if那一行比較關鍵,這樣配置,保證不傳n參數的時候,就按原名字保存。不會出現空名字。
由于是以header形式指定,cdn會保存此頭信息,內容分發時,也會是一樣的表現。
apache讀取不到get參數,因此配置不成功。不能應用到以apache作為文件服務器的情況,如果誰知道apache也可以配置,請告之,謝謝。