kkfileView 使用問題年終答疑篇
前言
首先非常感謝社群同仁對 kkfileview 專案的關注,kkfileview 開源一年多以來,收穫了兩千六百多個贊以及獲得碼雲最有價值專案GVP,這離不開大家的貢獻和關注。同時,kkfileview 的設計模式,也被其他的類似專案所抄襲,這也從側面說明了 kkfileview 存在的價值。但是開源容易,維護不易,在維護 kk 開源社群過程中也遇到了某些低素質人的惡語相向。但是我們並沒有放棄,一直堅持做開源,從 kkfileview 之後也陸續開源了幾個優秀的專案。由於公司事務原因,後面對 kkfileview 的問題關注的比較少,因為 kkfileview 的跨語言跨平臺特性,使用人群比較廣泛,以至於很多人在搭建環境過程中遇到了各種問題沒有得到很好的解決,深感抱歉,這也直接導致 kkfileview 流失了一大部分的使用者。正值年假將近騰出了點時間,正好可以好好捋一捋 kkfileview 的系列問題。
進入正題
問題一、kkfileview專案怎麼部署?
kkfileview使用java語言,底層基於spring boot框架開發,spring boot是一個為微服務而生的底層框架,專案打成jar包後自帶了web 容器,伺服器部署時不需要額外的tomcat容器,只需要將jar包丟到某個目錄,然後執行一下指令碼即可
nohup java -Dspring.profiles.active=uat -jar /home/it/file-preview/jodconverter-web-1.5.8.RELEASE.jar > /home/it/file-preview/log/app.log &
其中spring.profiles.active代表配置檔案是uat的。
問題二、kkfileview依賴的外部元件主要作用是什麼?
kkfileview主要依賴openoffice或者liberoffice、以及redis。openoffice主要用來轉換word系列的辦公文件,使其能夠被瀏覽器直接或間接渲染,如doc、ppt會轉換成pdf;excel會被轉換成html。redis這裡有兩個作用,一是用來儲存已轉換過檔案的檔名,用來避免重複轉換提供效率。二是用來充當分散式佇列,解決併發預覽和有些大的檔案可以提前入隊轉換的問題。
問題三、檔案預覽亂碼了有哪些原因呢?
很多人反饋,我在本地執行很好,部署到伺服器上後就亂碼了。其實檔案預覽亂碼問題很簡單,一般有兩個原因,一個是編碼問題,一個是字型問題。我們先說字型問題。一般的做法是將Windows下的字型拷貝到Linux伺服器上,具體操作如下:
將Windows下的C:\Windows\Fonts 目錄下的檔案完整拷貝到Linux下的 /usr/share/fonts目錄。然後依次執行mkfontscale 、mkfontdir 、fc-cache使字型生效。
編碼問題的話是個老生常談的問題。因為其受執行所在主機環境的影響不確定因素比較高,常規做法是,修改配置檔案中如下配置,一般都是utf-8或者gbk。還不行,就在啟動腳本里設定-Dfile.encoding=UTF-8試試
server.tomcat.uri-encoding = UTF-8 converted.file.charset = GBK
問題四、本地執行起來後報檔案找不到異常?
一般遇到這個異常是因為你的檔案目錄地址配置錯誤了,如下檔案目錄配置:
file.dir = /Users/chenkailing/test/
注意目錄最後是以/結尾的
問題五、專案啟動時,報錯Redission is shutdown
出現這個問題一般有兩個原因,原因一、redis服務本身有問題、或者redis服務有密碼認證,專案沒有配置密碼,遇到redis帶有密碼認證的可在配置檔案中加入如下配置
spring.redisson.password = xxx
原因二、openoffice程序未關閉。kkfileview在啟動時會自動開啟openoffice的轉換服務程序,所以在啟動kkfileview前,需要保證openoffice程序是關閉的
問題六、kkfileview部署成功後怎麼接入呢?
kkfileview從設計之初就充分考慮了微服務的使用場景,以http介面提供服務實現了跨語言跨系統跨服務。要使用kkfileview預覽,首先這個檔案要可訪問,然後就訪問地址作為引數傳入kkfileview介面即可,如下:
https://localhost/onlinePreview?url=http://www.xx.com/meinv.png
url後面的引數就是你要預覽的檔案地址,當然為了url引數接收的正確性,檔案地址需要被編碼
問題七、 http://file.keking.cn 怎麼訪問不了?
我們的公共體驗服務開放了近一年,開放服務能夠最快速直觀的體驗kkfileview的預覽功能,這為kkfileview專案帶來了不少的使用者。但是因為kkfileview和公司內部的業務系統部署在一起後面考慮到直接暴露服務帶來的安全問題,所以就關閉了。這裡呼籲如果有閒置伺服器而且願意提供幫助的歡迎聯絡我一起共建kkfileview。
問題八、相同的檔案型別有的可以預覽有的不可以?
這個是因為檔案格式的相容性問題,從兩個類別的檔案來聊聊這個問題。
一個是辦公文件,微軟的office一直在更新,當openoffice的更新沒趕上office的功能時就會出現這種預覽保報錯的問題。最簡單的鑑別方法就是直接使用openoffice開啟是否有問題,能開啟基本就能預覽了。
一個壓縮檔案,壓縮包不能預覽很純粹是因為壓縮包格式的相容性問題,壓縮包的格式太多了,相同的zip格式壓縮包也存在各種不同的壓縮格式
問題九、kkfileview怎麼整合到java專案?
一般有這個問題的是大概率是還沒了解kkfileview的服務模式,kkfileview不需要整合到自己的專案裡面,只要獨立部署好kkfileview專案本身就可以對外提供檔案預覽服務了。具體可以參考問題六
結語
以上九個問題基本囊括了kkfileview使用過程中方方面面,希望此文能夠幫助更多的kkfileview使用者以及將要使用kkfileview的所有同仁。再次感謝大家的關注與支援,同時也呼籲大家一起參與進來共建專案,給我們提更多的建議,讓kkfileview走的更遠更好。最後打個小廣告,我們凱京在開源中國的官博成立了,歡迎關注我們,一起學習一起進步。