文件被上傳到FastDFS后Storage服務(wù)端將返回的文件索引(FID),其中文件名是根據(jù)FastDFS自定義規(guī)則重新生成的 例如:wKgB-lkdxUmAPb-QAAIbD3CxJDw317.txt,而不是原始文件名,使用http下載時(shí)如不加處理,顯示給用戶的文件名會是這樣的wKgB-lkdxUmAPb-QAAIbD3CxJDw317.txt,這樣的用戶體驗(yàn)很不好。由于FastDFS不會存儲原始文件名,也不提供回復(fù)原始名的方法,我們需要自己實(shí)現(xiàn)
那么就需要我們將原始文件名記錄在數(shù)據(jù)庫中,在下載的時(shí)候?qū)⒃募麄鬟f到服務(wù)器,然后用nginx獲取到原始文件名,在寫入響應(yīng)頭里面
http://192.168.1.124:8000/group2/M00/00/00/wKgB-Vkb2yuAEk80AAAABpDVNbM781.txt?attname=name.txt
if($arg_attname?~*?\.(doc|docx|txt|pdf|zip|rar|txt)$)?{
add_header?Content-Disposition"attachment;filename=$arg_attname";
}