精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在 Node.js 中使用 FilePond

譯文
開發 后端
FilePond 為 JavaScript 應用程序帶來了簡單而強大的文件上傳功能,同時它也是免費的開源軟件。以下是如何在 Node.js Express 后端使用FilePond。

 [[414353]]

【51CTO.com快譯】上傳文件是云應用程序的常見需求。FilePond是一個可靠的開源項目,它為React和Svelte等許多 JavaScript 框架提供了復雜的文件處理和包裝器。

本文詳細地概述了使用 FilePond 、 Node.js 和 Express 后端處理文件上傳。

為什么要使用FilePond?

有許多庫可用于文件上傳,但 FilePond 非常易于使用,并且無需額外配置即可處理圖像優化等細節。此外,它在服務器端為開發人員提供了一個清晰的流程。

再加上對 Angular、jQuery、React、Vue 和 Svelte 的支持以及圖像預覽和縮放器等眾多插件,FilePond在考慮文件上載時應該位于選項列表的頂部。

設置 FilePond 項目

首先設置一個項目來保存示例代碼。創建一個目錄并將其命名為 /filepond。然后轉到命令行上的目錄并鍵入npm init. 接受所有默認值。

下一步使用npm install Express安裝Express服務器。接下來,創建一個 index.html 文件并將其放在項目根目錄中。使用清單 1 的內容來更新新文件。

清單 1. 開始 index.html

  1. <html> 
  2. <head> 
  3.   <link href="https://unpkg.com/filepond/dist/filepond.css" rel="stylesheet" /> 
  4.   <script src="https://unpkg.com/filepond/dist/filepond.js"></script> 
  5. </head> 
  6. <body> 
  7.   <input type="file"> 
  8. </body> 
  9. <script> 
  10.   const inputElement = document.querySelector('input[type="file"]'); 
  11.   const pond = FilePond.create( inputElement ); 
  12. </script> 
  13. </html> 

清單 1 首先從 unpkg CDN 中導入 FilePond 樣式和代碼。還可以通過 npm 和構建工具集成或直接導入它。

標記僅包含一個文件輸入。最后,底部的腳本獲取對文件輸入的引用,然后使用FilePond API使用輸入元素FilePond.create(inputElement)創建一個新的FilePond實例。

現在將添加一個腳本來運行應用程序。修改 package.json 文件以包含清單 2 中的第 7 行。

清單 2. 添加開發(dev)腳本

  1.   "name": "filepond", 
  2.   "version": "1.0.0", 
  3.   "description": "", 
  4.   "main": "index.js", 
  5.   "scripts": { 
  6.     "dev": "nodemon server.js", 
  7.     "test": "echo \"Error: no test specified\" && exit 1" 
  8.   }, 
  9.   "author": "", 
  10.   "license": "ISC", 
  11.   "dependencies": { 
  12.     "express": "^4.17.1" 
  13.   } 
  14. }    

通過在CLI中鍵入nodemon-v,確保全局安裝了nodemon。如果找不到,請使用npm install -g nodemon.

現在,可以在項目根目錄下輸入npm run dev來運行應用程序。

在應用程序運行時,可以通過打開瀏覽器訪問http://localhost:43000/來訪問簡單的起始頁。

將會看到一個簡單的文件輸入組件。盡管 FilePond 尚未綁定到后端,但可以繼續從本地文件系統中選擇一個文件,方法是單擊“瀏覽”或將文件拖到 FilePond 組件上,FilePond 將按照順序進行為其排隊。

處理文件上傳

與后端交互的第一步是告訴 FilePond 的位置在哪里。FilePond 可以處理任何 URL。在本例子中,我們將使用來自同一域的相對路徑。如果使用指向另一個域的絕對 URL,那么CORS將發揮作用。

修改 index.html 中的腳本以包含清單 3 中所示的配置。

清單 3. 設置服務器 URL

  1. <script> 
  2.   const inputElement = document.querySelector('input[type="file"]'); 
  3.   const pond = FilePond.create( inputElement ); 
  4.   pond.setOptions({ 
  5.     server: "/upload" 
  6.   }) 
  7. </script> 

清單 3 告訴 FilePond (通過 POST)將文件位發送到相對 URL /upload。讓我們在服務器上準備一個簡單的處理程序來驗證端點是否被命中。將清單 4 中的代碼添加到 index.js 文件中。

清單 4. 映射 /upload POST

  1. app.post("/upload", function(req, res){ 
  2.   console.log("BEGIN /upload"); 
  3. }) 

然后返回瀏覽器并刷新頁面。當上傳文件時,可以通過查看服務器日志并查看“BEGIN /upload”輸出來驗證是否正在訪問端點。

保存臨時文件

上傳文件時,服務器首先將文件臨時寫入某個位置。服務器用唯一 ID 響應以確認上傳,當客戶端提交包含文件輸入的表單時,它將包含唯一 ID。然后,服務器使用唯一 ID 來定位臨時文件并將該文件移動到其長期位置。

也可以采用多種不同的方法來支持服務器端的這些需求,同時使用文件系統和數據庫。

本示例將使用Formidable庫來處理 FilePond 發送的多部分 POST。Formidable 是一個成熟且功能強大的庫,它的靈活性足以編寫自定義流處理程序。例如,如果想將文件保存到數據庫中,可以自己處理文件塊并將它們流式傳輸到數據存儲。

在本演示中,只需將簡單地將臨時文件寫入磁盤。首先安裝 Formidable:停止服務器(如果正在運行)并鍵入npm install formidable. 現在您可以重新啟動服務器。

轉到 index.js 并通過在文件開頭插入以下行來導入庫:

const formidable = require('formidable');

然后使用清i單 5 更新ndex.js。

清單 5. 接受臨時文件

  1. app.post("/upload", function(req, res){ 
  2.   console.log("BEGIN /upload"); 
  3.   const form = formidable({ multiples: false }); 
  4.  
  5.   form.parse(req, (err, fields, files) => { 
  6.     if (err) { 
  7.       next(err); 
  8.       return
  9.     } 
  10.     let theFile = files.filepond.path; 
  11.     console.log("theFile: " + theFile); 
  12.  
  13.     res.writeHead(200, { 'Content-Type''text/plain' }); 
  14.     res.end(theFile); 
  15.   });   
  16. }) 

使用 Formidable接受文件是輕而易舉的。如果通過 Web 界面上傳文件,將在日志記錄中看到該文件已寫入默認的臨時文件位置。例如,在我的本地系統上,即 C:\Users\mtyson\AppData\Local\Temp\。即可以打開文件并驗證它是你發送的文件。

請注意,應用程序使用文件路徑發送純文本響應。這在現實場景中是不安全的,因為最終用戶可以看到文件結構并收集有關系統的信息(就像我的文件路徑顯示它是 Windows 系統一樣)。

對于生產用途,需要一個間接層,以便保存文件并創建一個與文件路徑相關聯的唯一 ID。出于安全的目的,我們將只使用文件路徑。

完成文件上傳

現在回到客戶端。將上傳器包裝在一個表單中并提交,并考慮將文件保存在何處以供長期存儲。由于表單僅發送文件的路徑(或唯一 ID),因此可以將其作為帶有 JSON 的 AJAX 請求輕松處理。保持文件傳輸的簡單性,并在示例中使用表單提交,如清單 6 所示。

清單 6. uploader表單

  1. <body> 
  2.   <form style="display:grid;" action="/save" method="POST"
  3.     <input type="file"
  4.     <button type="submit" onclick="">Save It</button> 
  5.   </form> 
  6. </body> 

現在,當單擊按鈕時,將提交文件路徑,默認標簽為“filepond”(這是可配置的)。在這種情況下,我們通過 POST 將信息發送到 /save。

請注意,如果將文件輸入設置為“多個支持”,FilePond 將處理排隊的多個文件。

要處理提交,返回 index.js 并使用 Express urlencoded 中間件:

  1. app.use(express.urlencoded({ extended: true })); 

現在就可以準備好接收文件信息。添加如清單 7 所示的處理程序。

清單 7. 接收保存

  1. app.post("/save", function(req, res){ 
  2.   console.log("BEGIN /save"); 
  3.   console.log(`req: ${JSON.stringify(req.body)}`); 
  4. }) 

清單 7 中的處理程序就位后,應該可以看到日志以確認信息已經到達。日志記錄將如下所示:

  1. req: {"filepond":"C:\\Users\\mtyson\\AppData\\Local\\Temp\\upload_28331577a229fe48443275b2655a1abe"

現在,可以從磁盤讀取該文件并對其執行所需操作。使用 Node 的內置 fs 模塊從磁盤讀取它,如清單 8 所示。

清單 8. 從磁盤讀取臨時文件

  1. const fs =要求( 'fs' ); //...讓fileData = fs . readFileSync ( req . body . filepond );  

清單 8 創建了文件的緩沖區對象。當然也可以使用Amazon上的ODFS或bucket將文件寫入另一個系統(如Amazon上的一個模塊)。

例如,在 MongoDB 中,可以按原樣獲取緩沖區并將其寫入如下字段:

  1. require('mongodb').Binary(fileData) 

這總結了上傳和保存文件的完整周期。我們將看看圖像預覽器擴展。

將圖像預覽器添加到應用程序很簡單,如清單 9 所示。

清單 9. 圖像預覽器插件

  1. <head> 
  2.   ... 
  3.   <script src="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js"></script> 
  4.   <link href="https://unpkg.com/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css" rel="stylesheet"
  5. </head> 
  6. <body> 
  7.  ... 
  8.  FilePond.registerPlugin(FilePondPluginImagePreview); 
  9.  ... 
  10. </body> 

當你上傳一個圖像文件時,你將看到一個預覽,如圖1所示。

圖1.圖像預覽器 

正如你所看到的,FilePond在一個易于使用的API中提供了一個現代的文件上傳器組件。還有許多其他FilePond插件可用,包括一個完整的圖像編輯器(通過與Pintura/Doka集成)。

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:梁菲 來源: InfoWorld
相關推薦

2020-08-05 08:31:51

SSL TLSNode.js

2021-07-03 17:43:03

Node.jsNode變量

2021-08-20 16:05:28

JavaScript node.js 應用安全

2021-10-25 09:00:37

Node.jsJS前端

2021-07-26 05:24:59

Node.js SO_RESUEPORLibuv

2022-11-17 09:52:12

RHEL 9Node.js

2011-09-09 14:23:13

Node.js

2022-08-22 07:26:32

Node.js微服務架構

2021-01-18 08:06:38

Node.js 追蹤JSON

2025-10-28 01:00:00

NestJSCSVJSON

2022-09-12 15:58:50

node.js微服務Web

2021-07-15 10:15:52

Node.jsJSON前端

2021-05-18 09:01:39

Node.jsJSON文件

2022-08-12 07:01:00

Node.jsXSS腳本

2021-06-15 15:03:21

MongoDBNode.jsCRUD

2022-08-28 16:30:34

Node.jsDocker指令

2023-01-10 14:11:26

2013-11-01 09:34:56

Node.js技術

2017-05-10 09:40:57

Ubuntupm2Nginx

2015-03-10 10:59:18

Node.js開發指南基礎介紹
點贊
收藏

51CTO技術棧公眾號

国产精品情侣呻吟对白视频| www国产精品内射老熟女| 一级黄色小视频| 欧美激情亚洲| 亚洲欧美国产精品| 91 在线视频观看| 色黄网站在线观看| www欧美成人18+| 国产一区二区在线免费视频| 国产一级特黄a高潮片| 国产综合久久久| 日韩美女主播在线视频一区二区三区| 久久久久久久久久久视频| 五月天婷婷在线视频| 9久草视频在线视频精品| 国产精品十八以下禁看| 久久精品欧美一区二区| 欧美成人milf| 日韩久久免费视频| 日本美女久久久| 国产精品久久久久av电视剧| 亚洲国产日韩av| 少妇熟女一区二区| 特黄aaaaaaaaa真人毛片| 韩国av一区二区三区| 日韩av电影在线播放| 久久久久亚洲av片无码下载蜜桃| 欧美日韩在线播放视频| 日韩av网站大全| 潘金莲一级淫片aaaaaaa| 精品176极品一区| 欧美视频在线免费看| 黄色三级中文字幕| 91香蕉在线观看| 国产精品不卡一区| 日韩欧美精品一区二区| 完全免费av在线播放| 涩涩涩在线视频| 亚洲精品美国一| 一区二区三区我不卡| 精品欧美不卡一区二区在线观看 | 欧美男人天堂| 亚洲高清免费在线| 成年丰满熟妇午夜免费视频 | 国产69精品久久久久9| 免费在线观看a级片| 色97色成人| 色先锋资源久久综合5566| 婷婷色一区二区三区| 综合国产视频| 亚洲丝袜av一区| 日本少妇高潮喷水xxxxxxx| 天海翼精品一区二区三区| 亚洲电影在线观看| 亚洲色偷偷色噜噜狠狠99网 | 欧美一级片免费观看| 欧美套图亚洲一区| 久久久蜜臀国产一区二区| 欧美国产二区| 国产一区二区影视| 中文字幕免费不卡| 日韩精品久久一区二区三区| 黄色在线免费观看大全| 日本一区二区三区四区在线视频| 欧洲精品码一区二区三区免费看| 欧美理论在线观看| 日本一区二区在线不卡| 天天干天天色天天爽| 午夜dj在线观看高清视频完整版| 一区二区三区高清| 久久久久免费看黄a片app| 美女扒开腿让男人桶爽久久软| 岛国av一区二区在线在线观看| av观看免费在线| 国产综合色区在线观看| 欧美日韩国产大片| 三上悠亚 电影| 欧美日韩看看2015永久免费| 亚洲性视频网站| 伊人久久久久久久久久久久久久| 一区二区三区网站| 高清欧美性猛交xxxx| 久久精品视频5| 久久精品国内一区二区三区| 亚洲综合av影视| 婷婷丁香一区二区三区| 亚洲国产成人午夜在线一区| 大陆极品少妇内射aaaaaa| 亚洲美女炮图| 在线不卡一区二区| 国产草草浮力影院| 欧美一二区在线观看| 九九热99久久久国产盗摄| 国产三级av片| 精品写真视频在线观看| 国产一区二区三区色淫影院| 国产女人在线观看| 亚洲色欲色欲www在线观看| a级黄色一级片| 久久精品97| 欧美精品一区二区三区在线 | 国产成人avxxxxx在线看| 国产精品女同一区二区| 91视频com| 国产a级黄色大片| 久久uomeier| 欧美成人video| 一级片黄色录像| 国产精品嫩草99av在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 天天躁日日躁狠狠躁喷水| 亚洲欧美另类综合偷拍| 日本女优爱爱视频| 538任你躁精品视频网免费| 日韩在线一区二区三区免费视频| 日韩三级av在线| 国产乱子伦视频一区二区三区 | 久久久国产精品无码| 亚洲国产精品久久久天堂| 清纯唯美亚洲激情| 隣の若妻さん波多野结衣| 国产精品国产三级国产普通话三级 | 一本久久精品一区二区| 国产成人av免费观看| 婷婷成人基地| 国产精品日韩欧美大师| 日本亚洲一区| 午夜视黄欧洲亚洲| 色综合久久久无码中文字幕波多| 日韩免费高清| 国产精品视频导航| 激情小说 在线视频| 精品国产成人在线| 精品无码人妻少妇久久久久久| 91精品综合| 91精品久久久久久久久久入口 | av加勒比在线| 成人欧美一区二区三区| 狠狠操狠狠干视频| 色综合咪咪久久网| 成人福利免费观看| 亚洲搞黄视频| 在线播放亚洲一区| 久久人妻无码aⅴ毛片a片app| 日本特黄久久久高潮| 日韩成人av电影在线| 日本精品裸体写真集在线观看| 亚洲欧美精品在线| 91午夜精品亚洲一区二区三区| 91影院在线免费观看| xxxx18hd亚洲hd捆绑| 激情小说一区| 欧洲美女免费图片一区| 天堂а√在线8种子蜜桃视频 | 91久久精品国产91性色69| 国产精品久久久久久久久动漫| 搡女人真爽免费午夜网站| 日韩免费看片| 99伊人久久| sm久久捆绑调教精品一区| 精品视频久久久久久久| 久久久久久久久久成人| 国产天堂亚洲国产碰碰| 国产一级特黄a大片免费| 99久久九九| 97欧洲一区二区精品免费| av影片在线| 亚洲石原莉奈一区二区在线观看| 最近日韩免费视频| 亚洲欧美日韩系列| 亚洲自拍偷拍精品| 日韩主播视频在线| 国产成年人在线观看| 亚洲小说春色综合另类电影| 97人洗澡人人免费公开视频碰碰碰| 天堂成人在线| 欧美精品日韩一本| 精品视频久久久久| 久久婷婷国产综合精品青草| 日韩精品你懂的| 国产精品mm| 日韩电影免费观看在| 国产精品白丝久久av网站| 久久久久久亚洲精品不卡| 久久电影视频| 日韩欧美一区在线观看| av大片在线免费观看| 国产精品久久毛片| xfplay5566色资源网站| 麻豆视频观看网址久久| 欧美一区二区激情| 精品久久久亚洲| 国产精品美女xx| www成人在线视频| 久久久久日韩精品久久久男男 | 色综合久久精品亚洲国产 | 久久视频免费观看| 亚洲精品97久久中文字幕| 色偷偷久久一区二区三区| 91精品一区二区三区蜜桃| 91香蕉视频黄| 杨幂一区二区国产精品| 人人爽香蕉精品| 黄色大片中文字幕| 天天综合国产| 日本一区视频在线观看免费| 白嫩白嫩国产精品| 成人黄色免费网站在线观看| 免费亚洲电影| 国a精品视频大全| 麻豆免费在线观看| 亚洲图片欧美日产| 午夜一区在线观看| 欧美一级夜夜爽| 一区二区三区在线免费观看视频| 五月婷婷激情综合网| 精品国产精品国产精品| 国产日韩成人精品| 亚洲国产无码精品| 成人看片黄a免费看在线| 四虎成人在线播放| 久久国内精品视频| 国内自拍视频网| 久久高清国产| 欧美精品99久久| 在线观看视频日韩| 久久久国内精品| 自拍视频亚洲| 日本一道在线观看| 66国产精品| 一区二区视频在线免费| 俺要去色综合狠狠| 欧美日韩一区二区三区在线视频| 久久久精品国产**网站| 国产精品播放| 91精品入口| www.一区二区三区| 天堂久久av| 999日本视频| 欧美经典一区| 亚洲最大av网站| 欧美成人一级| 99re在线国产| 天堂久久av| 国产女主播一区二区三区| 成人影院中文字幕| 精品九九九九| 中文字幕精品影院| 日本在线观看一区二区| 欧美日韩激情| 一区二区不卡在线观看| 四虎成人av| 最新av在线免费观看| 综合日韩在线| 国产v片免费观看| 性色av一区二区怡红| 蜜臀久久99精品久久久酒店新书 | 欧美日韩理论片| 国内精彩免费自拍视频在线观看网址 | 亚洲激情综合网| 欧美日韩成人免费观看| 亚洲一区二区高清| av大片免费在线观看| 欧美视频免费在线| 中文字幕a级片| 91精品欧美久久久久久动漫| 亚洲av无码乱码国产麻豆| 亚洲精品一区二区三区精华液| 天天射天天操天天干| 亚洲最新视频在线| 三区四区在线视频| 欧美激情videos| 亚洲美女炮图| 成人在线一区二区| 波多野结衣一区二区三区免费视频| 国产免费一区二区| 国产伦精品一区二区三区千人斩| 天天好比中文综合网| 午夜日韩激情| 成人黄色片视频| 韩日欧美一区二区三区| 国产高潮失禁喷水爽到抽搐 | 欧美成ee人免费视频| 欧美日韩性在线观看| 国产精品国三级国产av| 老司机午夜精品视频| 国产精品嫩草影视| 久久伊人蜜桃av一区二区| 国产亚洲精品久久久久久豆腐| 亚洲一级电影视频| 一级特黄免费视频| 日韩免费一区二区| 番号在线播放| 久久久久久久国产| 国产69精品久久| 国产91视觉| 色88久久久久高潮综合影院| 国产3p露脸普通话对白| 久久精品免费观看| 懂色av粉嫩av蜜乳av| 亚洲日本一区二区| 无码人妻精品一区二区三区9厂 | 日韩欧美亚洲综合| av网站免费大全| 一区二区成人精品| 2001个疯子在线观看| 国产一区二区视频在线观看| 亚洲国产合集| www.av毛片| 国产一区二区精品久久| 成年人免费观看视频网站| 亚洲一区二区影院| 国产精品欧美亚洲| 亚洲香蕉在线观看| 亚洲优女在线| 国产精品精品软件视频| 午夜精品视频一区二区三区在线看| 美女福利视频在线| 懂色av一区二区三区免费观看| 国产麻豆a毛片| 欧美亚洲动漫制服丝袜| 色吊丝在线永久观看最新版本| 欧美高清视频在线| 爱情电影网av一区二区| 性欧美videosex高清少妇| 国产欧美日韩亚洲一区二区三区| 少妇献身老头系列| 一区二区三区欧美日韩| 国产三级漂亮女教师| 日韩在线观看精品| 日本免费一区二区三区等视频| 视频在线99re| 日本中文在线一区| 色一情一交一乱一区二区三区| 欧美性xxxx极品高清hd直播| 无码国产伦一区二区三区视频| 国内精品久久久久影院 日本资源| 亚洲国产欧美国产第一区| 国产av第一区| 国产乱码精品一品二品| 麻豆精品一区二区三区视频| 欧美一区二视频| 特级毛片在线| 国产精品久久精品国产| 亚洲高清资源| 午夜剧场免费看| 午夜精品123| 日本免费一区二区三区最新| 日本亚洲欧洲色α| 国产一区二区电影在线观看| 男女无套免费视频网站动漫| 国产精品网站一区| 国产又大又粗又硬| 美女av一区二区三区| 欧美高清hd| 国产黄色片免费在线观看| 95精品视频在线| 丁香社区五月天| 在线观看久久久久久| 亚洲精品777| 国产欧美久久久久| aaa国产一区| 波多野结衣一区二区三区在线| 最近2019中文字幕一页二页 | h片在线观看视频免费免费| 精品亚洲一区二区三区四区五区高| 99精品国产在热久久| 中文字幕网站在线观看| 欧美日韩aaaaa| 精精国产xxxx视频在线中文版| 精品国产乱码久久久久久108| 美女诱惑一区| 超碰手机在线观看| 亚洲精品国精品久久99热一| 午夜影院在线播放| 亚洲色图自拍| 成人综合激情网| 波多野结衣高清视频| 欧美成人精品h版在线观看| 久久精品色综合| 97超碰成人在线| 亚洲大片在线观看| se在线电影| 成人午夜电影在线播放| 丝袜a∨在线一区二区三区不卡| 久久av红桃一区二区禁漫| 欧美精品一区二区三区很污很色的| 成人免费无遮挡| 大胆欧美熟妇xx| 国产人妖乱国产精品人妖| 亚洲AV无码乱码国产精品牛牛| 国产z一区二区三区| 激情91久久| 中国美女黄色一级片| 亚洲精品国产拍免费91在线| 日日夜夜亚洲精品| 欧美aⅴ在线观看| 一二三区精品视频| 成年在线电影| 美女三级99|