node實現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項目實踐
前言
最近在做一個官網(wǎng),里面需要很多圖片,比較占用資源,打包體積有點大。所以想換成圖片CDN方式,之前寫過一個類似的,是需要后端同事提供接口,正好最近在看node,所以準備用node實現(xiàn)一下。
什么是圖片CDN
與傳統(tǒng)的CDN不同,圖片CDN是CDN網(wǎng)絡(luò)的一種應(yīng)用,專門用于加速圖片的傳輸和加載,當(dāng)使用圖片CDN的時候,圖片被保存在CDN提供商的服務(wù)器上,并通過多個地理位置的邊緣節(jié)點提供服務(wù)。當(dāng)用戶請求訪問這些圖片時,CDN會自動將圖片傳送到距離用戶最近的邊緣節(jié)點,從而實現(xiàn)快速加載和高可用性。
為什么用圖片CDN
1.可以提高網(wǎng)頁加載速度,因為圖片被存儲在離用戶更近的服務(wù)器上,可以減少網(wǎng)絡(luò)延遲,加快傳輸速度,提高網(wǎng)頁加載速度。
2.節(jié)省帶寬消耗,CDN可以分擔(dān)原始服務(wù)器的流量壓力,通過緩存圖片并在需要時提供服務(wù),從而減少原始服務(wù)器的帶寬消耗。
3.減輕源服務(wù)器的負載,將圖片的從源服務(wù)器上轉(zhuǎn)移到CDN服務(wù)器上,減小了打包的體積,減輕了服務(wù)器的壓力。
實現(xiàn)過程
這次實現(xiàn)主要用的是express + cloudinary + node,主要借用了cloudinary,將圖片上傳到cloudinary,
將其中的cloud_name、api_key、api_secret換成自己就行,話不多說直接上代碼
const express = require('express'); const multer = require('multer'); const cloudinary = require('cloudinary').v2; const app = express(); // 配置Multer中間件 const storage = multer.diskStorage({ ? destination: (req, file, cb) => { ? ? cb(null, 'uploads/'); // 指定上傳文件保存的目錄 ? }, ? filename: (req, file, cb) => { ? ? cb(null, file.originalname); // 使用原始文件名保存上傳文件 ? } }); const upload = multer({ storage }); // 配置Cloudinary cloudinary.config({? ? ? cloud_name: '*********',? ? ? api_key: '*********',? ? ? api_secret: '*********' ? ? }); // 處理文件上傳 app.post('/upload', upload.array('images', 10), (req, res) => { ? const files = req.files; ? const uploadPromises = []; ? // 遍歷所有上傳的文件 ? for (let i = 0; i < files.length; i++) { ? ? const file = files[i]; ? ? const uploadPromise = new Promise((resolve, reject) => { ? ? ? cloudinary.uploader.upload(file.path, (error, result) => { ? ? ? ? if (error) { ? ? ? ? ? reject(error); ? ? ? ? } else { ? ? ? ? ? resolve(result); ? ? ? ? } ? ? ? }); ? ? }); ? ? uploadPromises.push(uploadPromise); ? } ? // 等待所有文件上傳完成 ? Promise.all(uploadPromises) ? ? .then(results => { ? ? ? res.json(results); ? ? }) ? ? .catch(error => { ? ? ? res.status(500).json({ error: '上傳失敗' }); ? ? }); }); // 啟動應(yīng)用程序 app.listen(3000, () => { ? console.log('應(yīng)用程序已啟動'); });
然后在本地啟動node服務(wù)就行,通過postman調(diào)用本地接口,實現(xiàn)批量上傳
其中的url就是我所需要的,可以直接放在img標簽中,替換本地路徑的圖片換成cdn形式圖片
結(jié)語
寫這個服務(wù)的最大目的是為了偷懶,同時也方便打包減小打包體積,有條件的大佬可以在寫一個上傳頁面,不用在通過postman調(diào)用
到此這篇關(guān)于node實現(xiàn)批量上傳本地圖片轉(zhuǎn)為圖片CDN的項目實踐的文章就介紹到這了,更多相關(guān)node 批量圖片CDN內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解基于node.js的腳手架工具開發(fā)經(jīng)歷
這篇文章主要介紹了詳解基于node.js的腳手架工具開發(fā)經(jīng)歷,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?
這篇文章主要介紹了如何解決npm?install版本不匹配問題:?npm?ERR!?code?ETARGET?npm?ERR!?notarget?No?matching?version?found?for,文中給出了詳細的解決方法,需要的朋友可以參考下2024-02-02淺析node中間件及實現(xiàn)一個簡單的node中間件
這篇文章主要介紹了淺析node中間件及實現(xiàn)一個簡單的node中間件,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09