來源:北大青鳥總部 2023年02月03日 11:23
眾所周知,程序猿很難有女朋友的,因為女生都喜歡擼貓,不喜歡擼代碼的;
有女朋友的程序猿,又因為白天黑夜的加班,沒有時間陪女朋友,整天和機器打交道,又缺少哄女朋友的天分,分手吧,分手吧。
夜深人靜,程序猿面對Bug時,一臉痛苦時,也總會打開一個加密的文件夾,翻看著前女朋友的照片回憶下逝去青春;耳邊單曲循環(huán)著那首歌 “ 懷念啊我們的青春啊,昨天在記憶里生根發(fā)芽,愛情滋養(yǎng)心中那片土地,綻放出美麗不舍的淚花 ” 。
雖然很懷念,但是現(xiàn)任女朋友發(fā)現(xiàn)了可怎么辦?越想越覺得不安。
突然,天空劃過一道閃電,猿小二突然站起來一拍猿腦(程序猿的腦袋),既然保存在在本地電腦上不安全,何不把這些照片都保存到云服務(wù)器(文件服務(wù)器)上呢,說干就干。
那么問題來了,這么多的圖片服務(wù)器廠商,選擇哪一個呢?聽說,阿里開源了一個叫Fastdfs的文件系統(tǒng)很好用,于是抱著試試看看的心態(tài),先來一個療程的
開始之前,咱們還是先來了解下阿里的這個分布式文件系統(tǒng)是個啥東西,它是阿里開源的一個優(yōu)秀的輕量級高性能的分布式文件存儲系統(tǒng),提供了核心的文件上傳、下載、文件同步等功能;最重要的是它是分布式架構(gòu)下的文件存儲,這就意味這個它可以應(yīng)對分布式環(huán)境下的各種問題,如:負(fù)載均衡等。
FastDFS 文件系統(tǒng)主要有三部分組成:
? Tracker Server(跟蹤服務(wù)器):主要做調(diào)度工作,如:負(fù)載均衡。
? Storage Server(存儲服務(wù)器):主要存儲文件和文件屬性相關(guān)信息
? Client(客戶端):主要是調(diào)用文件服務(wù)器接口進(jìn)行文件的上傳、下載等操作
如果是僅僅用來存儲前女朋友的照片,是有點大材小用了;不過鑒于此事,關(guān)系到程序猿的幸福生活,還是值得的
了解了FastDFS之后,接下里我們就開始上傳私密圖片吧,在正式開始之前我們要先準(zhǔn)備下環(huán)境,所謂“兵馬未動,糧草先行”,咱么也得先來準(zhǔn)備下文件服務(wù)器,由于這里安裝文件服務(wù)器不是我們這里的重點,所以在這里具體步驟不在贅述,我這里是在Linux上安裝的FastDFS(fastdfs的安裝非常復(fù)雜),接下來就開始在SpringBoot中集成FastDFS
首先按照咱么的慣例,先來使用Spring Initializr(當(dāng)然別的方式也可以,主要是構(gòu)建Maven工程)創(chuàng)建Spring Boot 基礎(chǔ)工程
<dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.5</version> </dependency> |
在application.properties屬性文件中添加fastdfs的相關(guān)配置信息
# fastDFS 配置 # 192.168.25.133是老師的虛擬機的ip fdfs.tracker-list=192.168.25.133:22122 |
配置類需要應(yīng)用啟動的時候注冊上傳文件必要的類
/** * fastdfs文件上傳的配置類 */ // 使用連接池的FastDFS @Import(FdfsClientConfig.class) // 解決jmx重復(fù)注冊bean的問題 @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING) @Configuration public class FileConfig { } |
編寫測試類,將圖片上傳到文件服務(wù)器
@SpringBootTest @RunWith(SpringJUnit4ClassRunner.class) public class DemoApplicationTests { @Autowired private FastFileStorageClient storageClient; /** * 文件上傳服務(wù)器 */ @Test public void testUpload() throws FileNotFoundException { // 本地文件路徑 File file = new File("D:\\Desktop\\xxxx\\110611110635b5f987b74e70c5.jpg"); // 上傳圖篇 StorePath storePath = storageClient.uploadFile( new FileInputStream(file), file.length(), "jpg", null); // 打印上傳到服務(wù)器的圖片路徑 String imagePath = storePath.getFullPath(); System.out.println("圖片在服務(wù)器路徑:" + imagePath); } } |
運行結(jié)果,看到控制臺返回一串路徑,如下:group1/M00/00/00/wKgZhV5czHGAIJRXAAJthmwF-no493.jpg
這個就是圖片被上傳到文件服務(wù)器后返回的保存在服務(wù)器的路徑
然后我們就可以在瀏覽器輸入http://192.168.25.133/group1/M00/00/00/wKgZhV5czHGAIJRXAAJthmwF-no493.jpg 直接訪問上傳的圖片,路徑是:http://服務(wù)器ip + 服務(wù)器返回的圖片路徑,是不是很簡單呢,以后有再多的女朋友也不用怕了,心中竊喜,哈哈哈...