處理代碼的相容性是前端攻城師們的家常便飯了,一般是對各種浏覽器進行相容性處理。但是有時候我們也會遭遇到浏覽器以外的影響因素,這個是經常會被忽視掉的内容。比如前幾天就聽說用戶端安裝迅雷、暴風影音等軟體會修改http連接配接數,進而影響浏覽器的http并發數。今天有幸,讓我見識了另一個因用戶端安裝個别軟體而造成的程式相容問題。罪魁禍首便是金山WPS2013.
故事的開始是這樣的。。。我用HTML5寫了一個檔案上傳插件,其中使用到了file API,在驗證檔案類型的時候使用了file.type擷取的檔案MIME類型,如果擷取的值在允許清單中,就讓其通過驗證。插件寫完了,應用到了項目中,送出測試了,一切都很順利。
然後今天,一個測試MM卻來找我,說檔案上傳功能不好使,明明選擇了一個word檔案,卻提示“檔案類型不允許”。剛開始我還不屑一顧,以為肯定是她的操作有問題,但是當我親手試了一遍後,發現确确實實是有問題!一個普普通通的word檔案而已,能有什麼蹊跷?于是我順着流程列印出來一些調試資訊,發現了一個驚天大陰謀,在測試MM的機器上,擷取到的這個word檔案的MIME類型竟然是application/kswps。并不是doc檔案正常的application/msword,或是docx檔案的application/vnd.openxmlformats-officedocument.wordprocessingml.document。遂詢問妹子的機器是不是安裝了金山WPS,得到了肯定回答。從名字不難看出,檔案的MIME類型被金山WPS給修改了(雖然給檔案是用微軟office建立的)。有圖有真相:

未安裝WPS,擷取到的doc和docx檔案的type都是正常的
安裝WPS2013後,doc和docx檔案的type都變成了application/kswps
由于我的允許清單中沒有這樣的值,自然也就不能驗證通過了。解決辦法用腳趾頭都能想出來,把這個application/kswps也加到允許清單中不就OK啦~正當我以為這就解決了問題準備解除安裝掉WPS時,誰知故事還沒有結束。。。請看我解除安裝掉WPS後擷取到的type值:
沒有了?沒有了!變成空了!尼瑪,金山你到底對我的電腦做了什麼!拿不到type值了,那我還怎麼驗證。
随後,我修改了檔案類型驗證方式,通過字尾名來檢查,這樣就不會受到MIME類型不一緻的幹擾了。問題雖然就此解決,但心中始終留有一絲對金山WPS的不解。另外,以上這種情況隻出現在金山WPS目前的最新版9.1上,也就是WPS2013。我試着安裝了8.1版本,是沒有這個現象的。不知金山WPS是否會注意到此問題。
本文轉自呂大豹部落格園部落格,原文連結:http://www.cnblogs.com/lvdabao/p/3246478.html,如需轉載請自行聯系原作者