標籤:虛擬機器 類型 問題 name 過濾 move 整合 src 找不到
前言:
自因為項目中需要使用上傳外掛程式,所以之前找了幾款上傳外掛程式。但是呢,小的上傳外掛程式是不支援我們項目上傳的(做虛擬機器項目的,一個鏡像可能好幾個G),所以呢這個外掛程式要支援分區上傳,拓展性要高(肯定的啦,不支援分區,玩命啊?)!
所以呢,我就找到了兩款外掛程式:
1. 百度的Webuploader
2. 國外的Plupload (這外掛程式真的好用,特此推薦,但是也有點小坑的地方。但相比百度的好一點,其實也是看實際需要!!!)
重點介紹坑的地方:
1.webuploader外掛程式在支援h5的瀏覽器上是使用h5上傳的,所以呢在你配置flash路徑的時候,即使路徑找不到,它特麼的也不會報錯(隱形的炸彈)!
所以,在不支援h5的瀏覽器下,該外掛程式會使用flash來上傳的啦!鄙人,目前的一個項目用的是vue.js,真的是好不容易整合進了webuploader!!!之前最早用plupload一直報undefined mox.js!哎,所以只能找百度的這個外掛程式了!
那下面呢,就來說下flash上傳的問題。首先說情境!我們的這個項目是最低支援ie9,於是捏,我們的測試就去測試了下ie9,一測試發現,根本無法選擇上傳檔案!
我聽聞之後,甚是驚訝,稟著程式員的思想:“我寫的代碼怎麼可能有問題?”,我就去調試了!一開始猜測是flash的一個坑!(下面會提到!!!),但是驗證之後發現不是的!
經過百度之後,反現了ie9是支援部分h5的,所以就猜測ie9 <都是使用flash上傳的!那行啊,為了驗證到底是不是flash的問題呢,我就在自己的代碼中增加了一行參數:
既然,支援強制使用flash,那好嘛!添上這參數之後,在chroem上運行,發現出現了ie9上的問題!這是我就已經確定是flash的問題,也行就是flash路徑的問題!然後呢,我就重新整理頁面,發現呢flash檔案一直都沒載入,這時候,我就更加坑定了!
但是,心裡也一直的罵這外掛程式,你說你為啥也不報錯呢?既然找到原因,那就解決好了!解決之後,後續發現最大的一個坑!
因為,我們這個項目提交之前,需要檔案的name base64加密一下,但是呢在其他的瀏覽器上發現都沒問題,但是唯獨在ie9上有問題,亂碼!!!心裡罵了ie一萬遍,其實最後發現不是ie的問題!
經過抓包發現,在flash上傳的時候,name沒有base64!!!
2. removeFile()根本不是真正的移除,而是改變檔案的狀態!
這個大家應該都知道,用過的都說過這個問題!但是呢,都說有個QUENEN我就看文檔上有,就不知道怎麼用!有知道的大神,可以留言!
順帶貼下。我是怎麼弄的一次上傳一個的!順帶再吐槽一點,這外掛程式支援多個的真的好,但是就不能支援一次只上傳一個嗎?有參數設定,其實呢?鳥用!!!
意會就行!!!輕噴!!!
3. 被隱藏的控制項,執行個體化不會成功!
這是我之前就知道的一個坑,所以我跨過去了!那是在2015的冬天,那時候我剛做php沒多久!!!哎,改這個Bug改的我真是天昏地暗,不知道咋回事!最後終於發現,特麼的是flash的問題!!!
據說,是flash的坑,然後就延伸到這個外掛程式上了!!!
4. 檔案選擇的時候,代碼有問題!
本人js算辣雞,多多少少看的懂它的意思,就改了下!經測試還是有效!
情境:
就是測試妹子,發了一個無尾碼的檔案來測試上傳的問題,結果發現可以被選中,然後上傳!然後妹子,果斷提出了BUG。。。
其實想吐槽,你特麼後台不判斷啊= =,後台不是PHP寫的,使用python那幫哥們寫的。。。但是呢,這的確是個BUG
可能會有人問,file控價不是可以定義上傳檔案尾碼咩?好的,我的回答是:為了相容性,chrome在52版本上會有一個大BUG,無視任何上傳外掛程式,
就是你定義了過濾的檔案類型,但是chrome在選擇檔案框彈出來的時候有8秒之多,,,所以,我們就又改了下源碼中的在file中增加自訂的尾碼的js,
統一在上傳部分增加一行,哪些可以上傳。。。。總之,就是用js做判斷!
百度外掛程式webuploader的坑!