圖片存儲和如何返回給前端
前言:
了不起學弟:了不起學長,最近我開發遇到了關于存儲圖片和返回給圖片給前端的相關內容,我不太會,可以給我講講嗎?了不起:可以,這塊其實不難,你學過幾次就可以了。
正文:
一般來說,我們圖片存儲都會存儲在專門的對象存儲服務器上。常見的有阿里云oss,七牛云,華為云等等。像這些對象存儲,一般都會有bucket(桶)的概念,和對象的概念。
你的項目一般都會有自己的一個桶,你就可以去桶內存儲你要存儲的對象。桶和對象都是有自己的權限,這個需要你自己通過后臺或者接口去設置acl。
對于前端需要上傳的圖片,我們后端通過MultipartFile 去接受圖片,然后通過阿里云的接口去把圖片上傳就可以了。
同時要注意,上傳圖片通過我們的接口,我們需要去校驗文件的真實性,大小。如果沒有這層校驗,不管是從業務的角度,還是安全的角度,都是不可取的。
上傳完圖片,我們可以在相應的云上獲取到圖片的鏈接。通過這個鏈接我們就有以下幾種方式去返回給前端了。
第一種:url可以直接返回給前端,讓頁面自己去加載圖片。這種方式是最方便的。
第二種,后端通過url去獲取到圖片,然后通過HttpServletResponse.getOutPutStream ,再OutPutStream.write。
通過輸出流的方式把圖片給前端。這種方式比第一種方式要復雜一點,適合文件下載接口。記得流處理完了要把流關閉。
第三種方式:一些比較固定的圖片,比如logo,固定的背景。我們再通過url獲取到圖片之后,通過Base64.getEncoder().encodeToString(byte)的方式,把圖片轉化成base64返回給前端。
這種方式適合一些固定圖片的場景,不太適合圖片太多的場景,對于前端來說有過多的base64不太合適。
溫馨提示:對于一些圖片需要用戶主動去上傳,并且會展示出來的圖片,切記要進行第三方的對圖片的安全檢查。
了不起所在公司的一個小組,就因為出現過用戶上傳頭像,頭像非法,然后被公安約談的情況。圖片的不僅僅需要格式校驗,圖片內容也是需要進行安全校驗的。
講到這里大家也就明白了,圖片上傳的前后邏輯。對于圖片上傳,大家了解了,其他的文件也是同樣的道理,圖片,文件,視頻等等都是一樣的。
對于一些大一點的視頻圖片,可能也會涉及到分段上傳,云都會有相應的api提供給大家。