婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > safari下載文件自動加了html后綴問題

safari下載文件自動加了html后綴問題

熱門標簽:山東電銷卡外呼系統原理是什么 亳州企業外呼系統 地圖標注怎么做商戶驗證 兼職做地圖標注好賺錢嗎 智能電銷語音機器人資訊 400 電話 辦理 打開百度地圖標注 蘇州外呼系統有效果嗎 海南外呼系統方案

如何下載文件?

方法一、直接通過nginx下載靜態文件

如果文件是保存在服務器上面的,可以直接用nginx下載文件

比如說可以供用戶下載pdf文件,那么我的nginx配置可以是這樣子的:

location ~ /document/(.*)\.pdf$ {
  root /home/nemo/myfile;
  try_files /$uri 404;
}

按照上面的配置,當我請求 http://fbd.intelleeegooo.cc/document/test.pdf 的時候,我服務器上的位于 /home/nemo/myfile/document/test.pdf 的這個文件就被下載了。當找不到相應的文件的時候,就會返回 404 。

方法二、通過php讀取文件并下載

但上面這種方式是所有人都可以下載pdf文件的,假如說下載文件這個動作是與賬號有關的,比如說某用戶只能下載某些文件,那么就需要在php里面對用戶賬戶進行處理并且下載相關文件。

看我在index.php里面這段示例代碼,這段代碼的功能下載test.txt文件

?php
$filePath = '/home/nemo/fun/testdownloadfile/test.txt';
$fileName = 'test.txt';
readfile($filePath);

比如說我開了一個8764端口,nginx配置如下:

server {
 listen 8764;
 server_name xx.xx.xx;
 ……
 ……
 ……
 location / {
 root   /home/nemo/fun/testdownloadfile;
  fastcgi_pass 127.0.0.1:xxxx;
  fastcgi_index index.php;
  include   fastcgi.conf;
 }
}

配置文件里面的 fastcgi_pass 后面可以是ip+端口,也可以是unix_socket的路徑。具體根據你安裝的php的里面的 php-fpm.conf 的 listen 來決定。

我們用 command + option + i 快捷鍵打開瀏覽器的調試模式,當我在瀏覽器里面請求 http://xx.xx.xx:8764/ 的時候,結果是瀏覽器直接把txt文件的內容顯示在了頁面上。

看一下調試模式里面的這個請求,它的response header如下:

可以看到它里面的 Content-Type 是 text/html ,表示是一個html文件,所以瀏覽器就直接展示在頁面上了?!娟P于常用的一些 Content-Type ,可以見本文最后】

那么我改一下代碼,在里面設置一下header,示例代碼如下:

?php
$filePath = '/home/nemo/fun/testdownloadfile/test.txt';
$fileName = 'test.txt';
header('Content-Disposition: attachment; filename=' . $fileName);
readfile($filePath);

我在chrome里面新建一個tab頁輸入url http://fbd.intelleeegooo.cc/document/test.pdf 的時候,成功下載了這個文件,如下圖所示:


但是我在safari里面的時候,下載下來的文件多了一個 html 后綴,如下圖所示


我再改下代碼,設置 Content-Type ,看如下示例代碼:

?php
$filePath = '/home/nemo/fun/testdownloadfile/test.txt';
$fileName = 'test.txt';
header('Content-Type: application/octet-stream;charset=utf-8');
header('Content-Disposition: attachment; filename=' . $fileName);
readfile($filePath);

這樣改過之后,在safari里面下載的文件就是正常的了,不帶html后綴的。

2.2 在php里面讀取并輸出文件的幾種方法

在設置完header信息之后,下面幾種方法都可以用來輸出文件

file_get_contents() ,這個方法是把文件的內容以字符串的形式全部讀取到內存里面。當文件比較大的時候,會超過內存限制

$content = file_get_contents($filePath);
echo $content;
file() ,將文件以行的形式全部讀取到數組中。當文件比較大的時候,會超過內存限制
$f = file($filePath);
while(list($line, $content) = each($f)) { // $line是int類型表示是第幾行(從0開始), $content是字符串類型表示這一行的內容
 echo $content;
}
readfile() ,讀取文件并且寫入到輸出緩沖區。這種方式可以輸出大文件,讀取單個文件不會超出內存限制。
ob_end_clean();
readfile($filePath);

但是看官方手冊上面的這段話

readfile自身不會導致任何內存問題。如果出現內存不足的問題,使用 ob_get_level() 確保輸出緩存已經關閉。

但 readfile() 方法還是可以會引起內存耗盡

readfile實際上還是需要采用MMAP(如果支持), 或者是一個固定的buffer去循環讀取文件, 直接輸出。

fopen() ,這就類似于C語言里面的讀取文件。fopen每次可以指定讀取某個塊大小的內容,可以讀入大文件。不會超過內存限制

$file = @fopen($filePath,"rb");
while(!feof($file)) {
 print(@fread($file, 1024*8));
 ob_flush();
 flush();
}

2.3 內存限制

在php的配置文件 php.ini 里面,有一個 memory_limit 這個設置項,設置的是每個腳本可以分配的內存。

如下圖所示,我自己放寬了一點變成了256M,默認是128M

正如上面所說,讀取大文件的時候,可能會內存耗盡。

php里面有 ini_set() 方法可以在腳本運行時保持新的值,在腳本結束時恢復。

并不是 php.ini 里面的所有設置項都可以被修改,所有可以被 ini_set() 修改的選項可以從 官方手冊里面的這個清單 知曉

有一種方法可以在執行的時候動態的修改腳本可以使用的內存大小,而不一定非要修改php.ini文件,畢竟php.ini是針對全局的。

在腳本里面動態的修改一些設置,只對該腳本有效,實際上并不真正地修改 php.ini 文件。

2.5 時間限制

一般情況下,使用php下載文件的時候,會加上一行 set_time_limit(0); ,表示不限制這個php腳本執行的時間

?php
$filePath = '/home/nemo/fun/testdownloadfile/test.txt';
$fileName = 'test.txt';

set_time_limit(0);
header('Content-Type: application/octet-stream;charset=utf-8');
header('Content-Disposition: attachment; filename=' . $fileName);
readfile($filePath);

看下 官方手冊上 的解釋


Content-Disposition 相關解釋

在常規的HTTP應答中, Content-Disposition 消息頭指示回復的內容該以何種形式展示,是以內聯的形式(即網頁或者頁面的一部分),還是以附件的形式下載并保存到本地

Content-Disposition 消息頭最初是在MIME標準中定義的,HTTP表單及POST 請求只用到了其所有參數的一個子集。只有form-data以及可選的name和filename三個參數可以應用在HTTP場景中

inline

inline展示txt文件
看如下示例代碼,設置inline內聯,將上面的test.txt文件在瀏覽器里面展示

?php
$filePath = '/home/nemo/fun/testdownloadfile/test.txt';
$fileName = 'test.txt';
header('Content-Disposition: inline; filename=' . $fileName);
readfile($filePath);

常用的幾種 Content-Type 類型

下面列一下常用的幾種Content-Type

  • text/html ,內容是html格式
  • text/plain ,內容是純文本格式
  • image/gif , gif圖片格式
  • image/jpeg , jpg圖片格式
  • image/png , png圖片格式
  • multipart/form-data ,常見的 POST 數據提交的方式。當需要上傳文件時,會用到這種類型
  • application/json ,消息主體是序列化后的 JSON 字符串
  • application/octet-stream ,二進制流數據。一般在下載文件的時候比較常見
  • application/x-www-form-urlencoded , 瀏覽器的原生form表單,提交的數據按照 key1=val1key2=val2 的方式進行編碼,key和val都進行了URL轉碼

總結

以上所述是小編給大家介紹的safari下載文件自動加了html后綴問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • 微信頁面倒計時代碼(解決safari不兼容date的問題)
  • JS IOS/iPhone的Safari瀏覽器不兼容Javascript中的Date()問題如何解決
  • JavaScript的new date等日期函數在safari中遇到的坑
  • safari cookie設置中文失敗的解決方法
  • iOS9中的WebKit 與 Safari帶來的驚喜
  • 禁止iPhone Safari video標簽視頻自動全屏的辦法
  • js實現可兼容IE、FF、Chrome、Opera及Safari的音樂播放器
  • javascript實現阻止iOS APP中的鏈接打開Safari瀏覽器
  • iphone的safari瀏覽器中實現全屏瀏覽的方法
  • node.js 使用ejs模板引擎時后綴換成.html

標簽:呼倫貝爾 溫州 綏化 清遠 安康 金華 萊蕪 紹興

巨人網絡通訊聲明:本文標題《safari下載文件自動加了html后綴問題》,本文關鍵詞  safari,下載,文件,自動,加了,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《safari下載文件自動加了html后綴問題》相關的同類信息!
  • 本頁收集關于safari下載文件自動加了html后綴問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产剧情一区在线| 在线不卡中文字幕| 精品视频全国免费看| 欧美videos大乳护士334| 亚洲黄色录像片| 国产精一区二区三区| 69堂亚洲精品首页| 中文字幕五月欧美| 另类成人小视频在线| 91免费国产在线观看| 久久精品一区二区三区不卡| 性欧美疯狂xxxxbbbb| 99久久国产综合色|国产精品| 日韩久久精品一区| 亚洲一区二区综合| 91老司机福利 在线| 中文字幕巨乱亚洲| 国产乱人伦偷精品视频不卡 | 日韩亚洲欧美高清| 一区二区三区加勒比av| 91在线码无精品| 中文字幕欧美国产| 福利视频网站一区二区三区| 日韩一区二区三区观看| 首页国产欧美久久| 欧美人xxxx| 亚洲成av人影院在线观看网| 欧美日韩一区国产| 亚洲尤物在线视频观看| 91久久精品一区二区二区| 亚洲日本va在线观看| 91亚洲男人天堂| 一区二区在线电影| 欧美视频一区二区| 肉丝袜脚交视频一区二区| 欧美丰满一区二区免费视频| 天天操天天综合网| 日韩一区二区免费在线观看| 麻豆一区二区99久久久久| 日韩欧美在线网站| 国产福利精品导航| 国产精品毛片久久久久久| 欧美日韩久久一区二区| 亚洲福利电影网| 制服.丝袜.亚洲.中文.综合| 精品一区二区三区免费播放| 久久综合九色综合97婷婷女人| 国产一区二区0| 中文字幕在线观看不卡| 欧美在线一区二区| 免费精品视频在线| 久久精品男人的天堂| 色婷婷综合久久久久中文一区二区| 亚洲男女一区二区三区| 3d动漫精品啪啪一区二区竹菊| 久久国产尿小便嘘嘘| 久久精品一区二区三区不卡牛牛| 成人美女视频在线看| 亚洲综合色婷婷| 日韩美一区二区三区| 国产成人午夜高潮毛片| 亚洲欧美激情一区二区| 欧美美女一区二区三区| 国产乱人伦偷精品视频不卡| 洋洋成人永久网站入口| 欧美成人精精品一区二区频| 9l国产精品久久久久麻豆| 午夜精品视频在线观看| 国产视频一区在线播放| 色八戒一区二区三区| 免费成人你懂的| 国产欧美综合色| 欧美剧情电影在线观看完整版免费励志电影| 韩国v欧美v亚洲v日本v| 综合色天天鬼久久鬼色| 欧美电影免费观看高清完整版在线| 国产成人午夜电影网| 午夜视频在线观看一区| 国产精品国产自产拍高清av| 欧美一区二区三区视频在线 | 中文字幕一区二区三区视频| 91精品国产综合久久久久久 | 成人精品gif动图一区| 亚洲成av人片一区二区梦乃| 中文字幕av一区二区三区高| 日韩一区二区三区免费观看| 欧美在线观看视频一区二区三区| 国产精品综合视频| 天天av天天翘天天综合网色鬼国产| 国产精品嫩草影院av蜜臀| www国产精品av| 日韩一卡二卡三卡国产欧美| 欧美性欧美巨大黑白大战| 国产大陆精品国产| 国产在线一区二区综合免费视频| 日韩精品色哟哟| 亚洲欧美经典视频| 国产精品日日摸夜夜摸av| 欧美精品一区二区三区在线播放 | 狠狠色狠狠色综合| 无码av中文一区二区三区桃花岛| 亚洲欧美偷拍三级| 中文久久乱码一区二区| 国产亚洲欧美在线| 久久久久久久久久久久久久久99| 欧美刺激脚交jootjob| 日韩你懂的在线观看| 欧美一区二区三区四区五区 | 欧美日韩dvd在线观看| 成人午夜看片网址| 国产福利91精品一区二区三区| 国产在线播放一区三区四| 精品一区二区三区在线播放 | 亚洲久本草在线中文字幕| 欧美国产一区二区| 欧美激情一区二区在线| ...av二区三区久久精品| 亚洲人123区| 亚洲一区欧美一区| 日本不卡一区二区| 蜜臀91精品一区二区三区| 精品亚洲国内自在自线福利| 国产一级精品在线| 国产成a人无v码亚洲福利| 91在线云播放| 欧美日韩一区在线观看| 91精品国产免费久久综合| 精品免费一区二区三区| 国产精品久久久久影院色老大| 亚洲欧美日韩国产中文在线| 亚洲电影一级片| 六月丁香综合在线视频| 成人精品电影在线观看| 欧美三级视频在线| 欧美成人乱码一区二区三区| 中文字幕欧美激情一区| 亚洲国产综合人成综合网站| 久久国产三级精品| 成人激情小说网站| 欧美亚一区二区| 精品对白一区国产伦| 日韩一区欧美一区| 日韩av高清在线观看| 东方欧美亚洲色图在线| 欧美日韩国产一二三| 国产午夜亚洲精品理论片色戒 | 日韩欧美高清dvd碟片| 国产日本欧美一区二区| 亚洲最大成人网4388xx| 日本欧美在线看| 波多野结衣在线一区| 911国产精品| 国产精品人成在线观看免费| 青青草原综合久久大伊人精品 | 久久国产精品无码网站| 99精品1区2区| 久久久久久久免费视频了| 亚洲一区二区免费视频| 成人午夜激情片| www国产精品av| 午夜精品一区在线观看| jlzzjlzz欧美大全| 精品粉嫩aⅴ一区二区三区四区| 亚洲成年人影院| 91亚洲国产成人精品一区二三 | jlzzjlzz亚洲女人18| 亚洲视频在线一区二区| 精品综合免费视频观看| 91黄色免费网站| 国产精品激情偷乱一区二区∴| 日韩电影在线观看电影| 91福利资源站| 亚洲三级在线观看| 国产成人免费在线观看不卡| 日韩美女在线视频| 日本欧美肥老太交大片| 欧美三区在线观看| 一区二区三区日韩在线观看| 成人h动漫精品一区二区| 精品国产乱码久久久久久免费| 蜜臂av日日欢夜夜爽一区| 在线观看欧美黄色| 一个色在线综合| 一本大道久久a久久精二百| 中文字幕欧美日韩一区| 国产成人精品免费在线| 久久久久久久免费视频了| 国产乱色国产精品免费视频| 久久蜜桃香蕉精品一区二区三区| 久久国产精品99精品国产| 7777精品伊人久久久大香线蕉| 天天av天天翘天天综合网色鬼国产| 欧美熟乱第一页| 午夜精品一区二区三区免费视频| 欧美三级电影在线观看| 亚洲一区二区三区免费视频| 欧美日韩另类一区| 美女一区二区视频| 日韩欧美亚洲国产精品字幕久久久| 久久99国产精品免费|