一種文件下載方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種文件下載方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]目前,參見(jiàn)圖1所示,通常采用如下技術(shù)進(jìn)行文件下載:客戶端的常規(guī)瀏覽器捕捉到下載按鈕的點(diǎn)擊事件以后,向服務(wù)器的下載文件的代理通用網(wǎng)關(guān)接口(Common GatewayInterface,CGI)或?qū)崿F(xiàn)下載功能的超文本預(yù)處理器(Hypertext Preprocessor,PHP)文件,如download, php,發(fā)送下載請(qǐng)求,代理CGI通過(guò)請(qǐng)求CGI向大文件存儲(chǔ)平臺(tái)或架平接口發(fā)送文件的唯一標(biāo)識(shí)信息(fiIekey ),在通過(guò)驗(yàn)證后代理CGI可以通過(guò)請(qǐng)求CGI從大文件存儲(chǔ)平臺(tái)或架平接口獲取驗(yàn)證信息(cookie)、域名(domain)和驗(yàn)證碼(key),跳轉(zhuǎn)至下載地址來(lái)獲取文件,所述下載地址由所獲取的domain和key組成,并且攜帶cookie信息。
[0003]在實(shí)現(xiàn)過(guò)程中,參見(jiàn)圖2所示,當(dāng)客戶端通過(guò)內(nèi)嵌于應(yīng)用的瀏覽器控件,如網(wǎng)絡(luò)視圖(webview),進(jìn)行下載文件時(shí),由于webview本身的限制,默認(rèn)不提供下載機(jī)制,客戶端側(cè)的系統(tǒng)程序會(huì)調(diào)用常規(guī)瀏覽器來(lái)進(jìn)行下載。由于cookie信息受瀏覽器安全機(jī)制保護(hù),系統(tǒng)程序只會(huì)把所述文件對(duì)應(yīng)的統(tǒng)一資源定位符(Uniform Resource Locator, URL)發(fā)送給常規(guī)瀏覽器,不會(huì)將cookie信息發(fā)送給常規(guī)瀏覽器。導(dǎo)致常規(guī)瀏覽器無(wú)法通過(guò)服務(wù)器的驗(yàn)證,進(jìn)而導(dǎo)致無(wú)法下載文件。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的主要目的在于提供一種文件下載方法、裝置和系統(tǒng),能夠保證文件的正常下載。
[0005]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0006]本發(fā)明提供一種文件下載方法,所述方法包括:
[0007]客戶端根據(jù)配置信息判斷出當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),得到并發(fā)送判斷結(jié)果;
[0008]接收判斷結(jié)果反饋信息,所述判斷結(jié)果反饋信息包括頭信息,所述頭信息為第一瀏覽器無(wú)法識(shí)別的文件類型;
[0009]當(dāng)切換到第二瀏覽器時(shí),所述第二瀏覽器根據(jù)所述判斷結(jié)果反饋信息進(jìn)行文件下載。
[0010]較佳地,所述判斷包括:
[0011]判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽,當(dāng)不支持打開(kāi)新窗口或標(biāo)簽時(shí),判定當(dāng)前啟用瀏覽器為第一瀏覽器。
[0012]較佳地,所述判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽之前,所述方法還包括:
[0013]判斷當(dāng)前啟用瀏覽器是否支持全屏顯示當(dāng)前網(wǎng)頁(yè)的指定區(qū)域,當(dāng)支持全屏顯示當(dāng)前網(wǎng)頁(yè)的指定區(qū)域時(shí),判定當(dāng)前啟用瀏覽器為第二瀏覽器;
[0014]當(dāng)不支持全屏顯示網(wǎng)頁(yè)中的指定區(qū)域時(shí),執(zhí)行判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽的步驟。
[0015]本發(fā)明提供一種文件下載方法,所述方法包括:
[0016]服務(wù)器接收判斷結(jié)果;
[0017]根據(jù)判斷結(jié)果將頭信息設(shè)置為第一瀏覽器無(wú)法識(shí)別的文件類型;
[0018]將所述頭信息封裝到判斷結(jié)果反饋信息中并發(fā)送所述判斷結(jié)果反饋信息。
[0019]較佳地,所述第一瀏覽器無(wú)法識(shí)別的文件類型為二進(jìn)制文件或壓縮文件。
[0020]較佳地,所述判斷結(jié)果以參數(shù)形式攜帶在請(qǐng)求消息中。
[0021]本發(fā)明提供一種客戶端,所述客戶端包括:
[0022]處理單元,用于根據(jù)配置信息判斷出當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),得到并發(fā)送判斷結(jié)果;
[0023]第一接收單元,用于接收判斷結(jié)果反饋信息;
[0024]第二瀏覽器,用于當(dāng)切換到第二瀏覽器時(shí),所述根據(jù)判斷結(jié)果反饋信息發(fā)送下載請(qǐng)求和下載參數(shù)。
[0025]較佳地,所述處理單元包括第一判斷子單元,用于判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽,當(dāng)不支持打開(kāi)新窗口或標(biāo)簽時(shí),判定當(dāng)前啟用瀏覽器為第一瀏覽器。
[0026]較佳地,所述處理單元還包括第二判斷子單元,用于判斷當(dāng)前啟用瀏覽器是否支持全屏顯示當(dāng)前網(wǎng)頁(yè)的指定區(qū)域,當(dāng)支持全屏顯示當(dāng)前網(wǎng)頁(yè)的指定區(qū)域時(shí),判定當(dāng)前啟用瀏覽器為第二瀏覽器;
[0027]當(dāng)不支持全屏顯示網(wǎng)頁(yè)中的指定區(qū)域時(shí),通知第一判斷子單元執(zhí)行判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽的操作。
[0028]本發(fā)明提供一種服務(wù)器,所述服務(wù)器包括:
[0029]第二接收單元,用于接收判斷結(jié)果;
[0030]設(shè)置單元,用于根據(jù)判斷結(jié)果將頭信息設(shè)置為第一瀏覽器無(wú)法識(shí)別的文件類型;
[0031]發(fā)送單元,用于將所述頭信息封裝到判斷結(jié)果反饋信息中并發(fā)送所述判斷結(jié)果反饋信息。
[0032]較佳地,所述第一瀏覽器無(wú)法識(shí)別的文件類型為二進(jìn)制文件或壓縮文件。
[0033]較佳地,所述判斷結(jié)果以參數(shù)形式攜帶在請(qǐng)求消息中。
[0034]本發(fā)明提供一種文件下載系統(tǒng),所述文件下載系統(tǒng)前述任一種所述客戶端、以及前述任一種所述服務(wù)器。
[0035]由上可知,本發(fā)明的技術(shù)方案包括:客戶端根據(jù)配置信息判斷出當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),得到并發(fā)送判斷結(jié)果;接收判斷結(jié)果反饋信息,所述判斷結(jié)果反饋信息包括頭信息,所述頭信息為第一瀏覽器無(wú)法識(shí)別的文件類型;當(dāng)切換到第二瀏覽器時(shí),所述第二瀏覽器根據(jù)所述判斷結(jié)果反饋信息進(jìn)行文件下載。由此,在當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),切換到第二瀏覽器,所述第二瀏覽器根據(jù)接收到的判斷結(jié)果反饋信息能夠正常進(jìn)行文件下載。
【附圖說(shuō)明】
[0036]圖1為現(xiàn)有技術(shù)中使用常規(guī)瀏覽器實(shí)現(xiàn)文件下載的原理示意圖;
[0037]圖2為現(xiàn)有技術(shù)中使用webview下載文件的原理示意圖;
[0038]圖3為本發(fā)明提供的一種文件下載方法的第一實(shí)施例的實(shí)現(xiàn)流程圖;
[0039]圖4為本發(fā)明提供的一種文件下載方法實(shí)現(xiàn)文件下載的原理示意圖;
[0040]圖5為本發(fā)明提供的一種文件下載方法的第二實(shí)施例的實(shí)現(xiàn)流程圖;
[0041]圖6為本發(fā)明提供的一種文件下載方法的第三實(shí)施例的實(shí)現(xiàn)流程圖;
[0042]圖7為本發(fā)明提供的另一種文件下載方法的實(shí)施例的實(shí)現(xiàn)流程圖;
[0043]圖8為本發(fā)明提供的客戶端的實(shí)施例的結(jié)構(gòu)示意圖;
[0044]圖9為本發(fā)明提供的服務(wù)器的實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0045]發(fā)明提供的一種文件下載方法的第一實(shí)施例,如圖3所示,所述方法包括:
[0046]步驟301、客戶端根據(jù)配置信息判斷出當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),得到并發(fā)送判斷結(jié)果;
[0047]這里,第一瀏覽器包括內(nèi)嵌于應(yīng)用的瀏覽器控件,例如webview ;
[0048]所述判斷結(jié)果可以以參數(shù)形式攜帶在請(qǐng)求消息中。在實(shí)際應(yīng)用中,所述判斷結(jié)果可以攜帶在超文本傳輸協(xié)議(Hypertext Transfer Protocol, HTTP)請(qǐng)求地址中的查詢(query)部分的參數(shù)中,當(dāng)所述參數(shù)為I時(shí)表示當(dāng)前啟用瀏覽器為第一瀏覽器。
[0049]步驟302、客戶端接收判斷結(jié)果反饋信息,所述判斷結(jié)果反饋信息包括頭信息,所述頭信息為第一瀏覽器無(wú)法識(shí)別的文件類型;
[0050]這里,所述第一瀏覽器無(wú)法識(shí)別的文件類型為二進(jìn)制文件或壓縮文件。頭信息指的是超文本傳輸協(xié)議(Hypertext transfer protocol, HTTP)包體中的頭(header)信息。
[0051]這里,所述判斷結(jié)果反饋信息可以是服務(wù)器向客戶端返回的。
[0052]步驟303、當(dāng)切換到所述第二瀏覽器時(shí),所述第二瀏覽器根據(jù)所述判斷結(jié)果反饋信息進(jìn)行文件下載。
[0053]這里,第二瀏覽器包括常規(guī)瀏覽器,如Google Chrome瀏覽器、Opera瀏覽器;
[0054]第一瀏覽器無(wú)法識(shí)別二進(jìn)制文件或壓縮文件,遇到無(wú)法識(shí)別的文件會(huì)在常規(guī)瀏覽器中打開(kāi),第二瀏覽器能夠打開(kāi)二進(jìn)制文件或壓縮文件,并可以直接下載該文件。
[0055]由此,本實(shí)施例在當(dāng)前啟用瀏覽器為第一瀏覽器時(shí),切換到第二瀏覽器,所述第二瀏覽器根據(jù)接收到的判斷結(jié)果反饋信息能夠正常進(jìn)行文件下載。
[0056]下面結(jié)合圖4對(duì)本發(fā)明提供的一種文件下載方法實(shí)現(xiàn)文件下載的原理進(jìn)行解釋說(shuō)明,本實(shí)施例中第一瀏覽器為webview。
[0057]當(dāng)判斷出當(dāng)前啟用瀏覽器為webview時(shí),客戶端將HTTP請(qǐng)求地址中的query部分的client設(shè)置為1,并將所述HTTP請(qǐng)求地址發(fā)送給服務(wù)器的download, php。
[0058]download, php在執(zhí)行的時(shí)候,只要捕捉到client為I且來(lái)源網(wǎng)址非空,就設(shè)置頭(header)信息為二進(jìn)制文件類型。
[0059]由于在跳出到常規(guī)瀏覽器的時(shí)候,Client=I依然有效,但是來(lái)源網(wǎng)址為空。因此只要download, php判斷client=l且來(lái)源網(wǎng)址為空,就訪問(wèn)大文件存儲(chǔ)平臺(tái)獲得下載文件所需要的信息,所述信息包括cookie、domain和key。
[0060]在跳出到常規(guī)瀏覽器的時(shí)候,常規(guī)瀏覽器會(huì)保持download, php的訪問(wèn)地址及參數(shù),因此通過(guò)常規(guī)瀏覽器能夠下載文件。
[0061]這里要說(shuō)明的是,在當(dāng)前啟用瀏覽器為常規(guī)瀏覽器時(shí),則不設(shè)置header信息。否則常規(guī)瀏覽器會(huì)下載download, php,下載到的文件并不是所需文件。
[0062]目前,區(qū)分常規(guī)瀏覽器和內(nèi)嵌于應(yīng)用的瀏覽器控件的方式包括:
[0063]一、在html的頭部加上能夠唯一標(biāo)識(shí)客戶端的userAgent字段,比如將HTTP Head里的UserAgent設(shè)置為帶有MicroMessager的字符串信息作為標(biāo)識(shí)。
[0064]二、在訪問(wèn)入口通過(guò)設(shè)置url參數(shù)來(lái)識(shí)別??蛻舳嗽谡?qǐng)求一個(gè)URL的時(shí)候,帶上一個(gè)via參數(shù)來(lái)標(biāo)識(shí)自身是常規(guī)瀏覽器還是webview。
[0065]然而,如果采用以上兩種方式,需要webview里的網(wǎng)頁(yè)和客戶端進(jìn)行約定,因此限制了使用范圍。
[0066]因此,本發(fā)明提供了一種文件下載方法的第二實(shí)施例,本實(shí)施例能夠不需要設(shè)置html頭部和url參數(shù)就能夠正確區(qū)分當(dāng)前啟用的瀏覽器類型,如圖5所示,所述方法包括:
[0067]步驟501、客戶端判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽,當(dāng)不支持打開(kāi)新窗口或標(biāo)簽時(shí),判定當(dāng)前啟用瀏覽器為第一瀏覽器,得到并發(fā)送判斷結(jié)果;
[0068]步驟502、接收判斷結(jié)果反饋信息,所述判斷結(jié)果反饋信息包括頭信息,所述頭信息為第一瀏覽器無(wú)法識(shí)別的文件類型;
[0069]步驟503、當(dāng)切換到所述第二瀏覽器時(shí),所述第二瀏覽器根據(jù)所述判斷結(jié)果反饋信息進(jìn)行文件下載。
[0070]由此,本實(shí)施例通過(guò)判斷當(dāng)前啟用瀏覽器是否支持打開(kāi)新窗口或標(biāo)簽,能夠快速、準(zhǔn)確判斷出當(dāng)前啟用瀏覽器是否為第一瀏覽器,進(jìn)而能夠高效的得到判斷結(jié)果。
[0071]本發(fā)明提供的一種文件下載方法的第三實(shí)施例,如圖6所示,所述方法包括:
[0072]步驟601、客戶端判斷當(dāng)前啟用瀏覽器是否支持全屏顯示當(dāng)前網(wǎng)頁(yè)的指定區(qū)域,當(dāng)不支持全屏顯示