[筆記] 六角學院 Node.js 2022 直播班記錄 – 18 multer 上傳到 imgur 功能

近期正參加六角學院的 Node.js 2022 直播班,想說做個紀錄並當作複習之用。這邊筆記下利用 multer 套件進行上傳到 imgur 圖課的步驟。
hex-school-logo


課程相關資訊

[連結]:https://www.hexschool.com/courses/nodejs.html

請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。


筆記

imgur 申請服務

目標是要取得右側所列參數:IMGUR_CLIENT_SECRET, IMGUR_REFRESH_TOKEN, IMGUR_CLIENTID, IMGUR_ALBUM_ID
1. 點選導覽列右上角的選單內的 Images -> All images 的下拉選單中,點選一個名為 New Album 的選項,新增一本相簿 ( 如 node-hex-school )
2. 完成後,再由導覽列右上角的圖示點選個人名稱的圖樣,你會看到以下畫面

hex-school-nodejs-2022-live-streaming-18-1

3. 點選第一個自動產生的新圖片,你就會看到 node-hex-school 的字樣。這時候的網址列的網址,就有相簿 ID –  https://imgur.com/a/<相簿 ID>
4. 申請 imgur 應用程式:https://api.imgur.com/oauth2/addclient,請記得先登入
hex-school-nodejs-2022-live-streaming-18-2
5. 依照情況選擇,由於我在上傳完圖片後,並沒有要進行轉址,所以選擇 OAuth 2 authorization without a callback URL,接著按下送出
6. 取得對應的 Client ID 和 Client Secret:若你日後忘記 Client Secret,僅能重新再產一個新的
7. 如果要申請 refresh_token,將右方的網址的 Client ID 換成你方才得到的,https://api.imgur.com/oauth2/authorize?client_id=${Client ID}&response_type=token,並在網址列貼上
8. 貼上後,會出現以下畫面,按下 Allow 後會導回 imgur 首頁。此時複製你的網址,你可以在網址的 query 中找到 refresh_token=<你的 refresh_token>hex-school-nodejs-2022-live-streaming-18-39. 上傳圖片要注意容量,它在上傳時會佔用遠端 server 的記憶體。目前 heroku 免費版的記憶體大小是 512MB

multer

1. 若要上傳圖片,你需要用 form-data 的格式
2. 它是一個 middleware,你可以透過它的 upload 方法的選項,那限制使用者上傳的資料大小、圖片…等
3. 上傳 OK 的圖檔,你可以用 req.file 的方式來存取
4. 在接收前端 form-data 傳來的形式時,若是使用 .any() 的話,代表會讀取所有的 key-value 其中的 value 為圖片的。若要做限制的話,可使用 .filelds 方法


系列文章

  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 9 Mongoose 連線基本操作
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 8 – Promise, async 和 await
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 7 – MongoDB 操作 CRUD 相關指令(下)
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 6 – MongoDB 操作 CRUD 相關指令
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 5 – MongoDB 環境建置
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 4 – 佈署到 Heroku 遠端
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 3 – POSTMAN 和自建 TodoList API Server
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 2 – npm
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 17 JWT 登入註冊功能
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 16 Swagger 初步教學
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 15 全方面的 Error 管理
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 14 Middleware 設計
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 13 Express 框架初探
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 12 連接遠端資料庫和環境變數設置
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 11 Mongoose 實作運用
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 10 Mongoose 額外補充和模組化
  • [筆記] 六角學院 Node.js 2022 直播班記錄 – 1 – Node.js 介紹和 node 模組原理
  • 按讚加入粉絲團

    延伸閱讀