精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

天天射—综合中文网| 高清成人在线| av日韩在线网站| 欧洲成人在线观看| 潮喷失禁大喷水aⅴ无码| 国产激情综合| 高跟丝袜欧美一区| 亚洲人久久久| 欧美 日韩 国产 成人 在线 91| 亚洲综合精品四区| 日韩中文字在线| 9.1在线观看免费| 欧美日韩在线精品一区二区三区激情综合 | 久久久无码人妻精品无码| av女在线播放| 国产精品理论片| 欧美一区二区三区图| 国产精品18在线| 日韩成人av电影| 亚洲人成网站精品片在线观看| 国产精品av网站| 国精品无码一区二区三区| 国产+成+人+亚洲欧洲在线| 欧美在线制服丝袜| 大j8黑人w巨大888a片| 黄色av网站免费在线观看| 老司机精品久久| 亚洲欧美日韩一区在线| 亚洲精品一二三四| 成人涩涩视频| 精品久久久久久亚洲国产300| 在线视频91| 国产免费av高清在线| 成人激情免费网站| 91成人在线看| 国产精品人人妻人人爽| 婷婷综合视频| 一区二区在线视频| 中文乱码人妻一区二区三区视频| 亚洲影视资源| 欧美日韩精品欧美日韩精品一综合 | 天堂av网在线| 国产精品亚洲欧美| 欧美巨乳美女视频| 国产喷水在线观看| 欧美一站二站| 日韩成人性视频| 97人妻精品一区二区三区免费| 动漫一区二区三区| 欧美片网站yy| 五月天婷婷亚洲| 成人mm视频在线观看| 色香蕉久久蜜桃| 无码人妻丰满熟妇区毛片18| 蜜桃视频动漫在线播放| 亚洲国产成人tv| 精品无码一区二区三区爱欲| 中文在线观看免费| 亚洲综合一区在线| 日b视频免费观看| 国产偷倩在线播放| 亚洲成av人影院| 3d动漫一区二区三区| gogo高清在线播放免费| 亚洲影院在线观看| 无码熟妇人妻av在线电影| 亚洲综合影视| 亚洲一区二区欧美日韩| 国产爆乳无码一区二区麻豆| 日韩av激情| 午夜精品久久久久影视| 欧美激情视频免费看| 亚洲女同志freevdieo| 欧美性xxxxxxxxx| 午夜激情在线观看视频| 欧美日韩免费电影| 亚洲国产日日夜夜| 国产3p露脸普通话对白| 亚洲电影观看| 欧美日韩三级在线| 日韩精品视频网址| a级日韩大片| 精品视频1区2区| 最新天堂在线视频| 伊色综合久久之综合久久| 亚洲黄色av网站| av男人的天堂av| 97精品在线| 欧美精品久久久久久久免费观看 | 精人妻一区二区三区| 久久动漫网址| 中文字幕av日韩| 亚洲成人生活片| 99热在线精品观看| 国产精品久久久久久av下载红粉| 91精品中文字幕| 成人精品一区二区三区四区| 欧美日韩一区二区三区在线观看免| 国产日韩精品在线看| 亚洲男人的天堂在线aⅴ视频| www插插插无码视频网站| yw.尤物在线精品视频| 日韩欧美的一区| 欧美特级黄色录像| 欧美二区不卡| 日韩av手机在线| 国产午夜激情视频| 日韩av一区二区在线影视| 亚洲wwwav| 九一国产在线| 亚洲国产成人av| 污网站在线免费| 色天天色综合| 色综合久久精品亚洲国产| 无码人妻久久一区二区三区| 国产一区二区三区久久悠悠色av| 国产精品久久久久久久久久久新郎| 国产精品羞羞答答在线| 91麻豆精品视频| 欧美日韩午夜爽爽| 福利精品一区| 亚洲免费电影在线观看| 精品无码人妻一区二区三区| 久久精品国产第一区二区三区| 国产精品亚洲不卡a| 午夜毛片在线| 91福利小视频| 久久久久久久无码| 国产精品videosex极品| 国产精品综合网站| 精品视频二区| 日韩欧美国产成人| 日韩Av无码精品| 欧美三级视频| 亚洲永久在线观看| 欧美成年黄网站色视频| 欧美性猛交xxxx乱大交| 美女又爽又黄免费| 国产精品v亚洲精品v日韩精品 | 久久久久久久久久久久久夜| 无码人妻少妇伦在线电影| 成人永久在线| 久久久精品视频在线观看| 国产67194| 久久精品国产成人一区二区三区 | 成人亚洲性情网站www在线观看| 亚洲va国产va欧美va观看| 麻豆免费在线观看视频| 午夜精彩国产免费不卡不顿大片| 91精品久久久久久久久久| sese一区| 欧美精品在线一区二区| 我要看黄色一级片| 韩国成人福利片在线播放| 欧洲金发美女大战黑人| 综合激情久久| 久久人91精品久久久久久不卡| 亚洲第一页视频| 337p粉嫩大胆色噜噜噜噜亚洲| 免费在线观看视频a| 四虎5151久久欧美毛片| 欧洲精品毛片网站| avav免费在线观看| 欧美美女喷水视频| 欧美三级日本三级| 成人h精品动漫一区二区三区| 国产va亚洲va在线va| 精品久久ai电影| 热门国产精品亚洲第一区在线| 九色在线观看| 欧美日韩一区二区三区四区| www成人啪啪18软件| 韩国女主播成人在线| 国产视频在线观看网站| 欧美激情极品| 欧美精品做受xxx性少妇| 国产夫绿帽单男3p精品视频| 亚洲午夜免费福利视频| av网站免费在线播放| 美女一区二区三区| av在线免费观看国产| 欧美黄色网视频| 国产综合在线观看视频| 欧洲中文在线| 亚洲人成在线观看网站高清| 久久黄色小视频| 麻豆成人av在线| 成人性做爰片免费视频| 极品束缚调教一区二区网站 | 日韩一二区视频| 国产成人福利av| 国产成人精品一区二区三区| 日本天堂在线观看| 日韩精品在线视频观看| 综合久久中文字幕| 亚洲一区二区成人在线观看| 性欧美丰满熟妇xxxx性仙踪林| 麻豆精品在线视频| av之家在线观看| 欧美独立站高清久久| 国产成人精品自拍| 久久久久黄色| 97av在线播放| 91国内在线| 国产性色av一区二区| 九九热国产视频| 国产欧美一区二区三区在线看蜜臀| 亚洲制服在线观看| 久久三级视频| 给我免费播放片在线观看| 精品一区二区三区在线| 日av在线播放中文不卡| 宅男在线观看免费高清网站| 亚洲一区二区国产| 天天干,天天操,天天射| 欧美精品三级日韩久久| 日韩美一区二区| 亚洲动漫第一页| 久久国产波多野结衣| 国产亚洲欧美一级| 婷婷六月天在线| 国产亚洲毛片在线| 91网站在线观看免费| 日韩一区二区在线免费| 欧美另类一区| 欧美日韩破处| 成人免费在线看片| 日本成人手机在线| 91精品视频网站| 国产成人久久精品麻豆二区| 欧美中文字幕在线播放| 国产资源在线观看入口av| 久久69精品久久久久久国产越南| 91大神xh98hx在线播放| 亚洲午夜精品久久久久久性色| 天堂中文网在线| 精品88久久久久88久久久| 99久久久久成人国产免费| 亚洲一区中文在线| 欧美色图一区二区| 亚洲精品成人少妇| 久久久久久久久久网站| 亚洲欧美二区三区| 在线免费观看亚洲视频| 亚洲欧美日本韩国| 午夜爱爱毛片xxxx视频免费看| 国产精品久久久久久久久久久免费看| 摸摸摸bbb毛毛毛片| 国产午夜精品在线观看| 波多野在线播放| 日本一区二区免费在线| 国产黄色片在线| 中文字幕免费一区| 国产三级aaa| 一区精品在线播放| 国产免费美女视频| 亚洲黄色小说网站| 久久亚洲av午夜福利精品一区| 亚洲图片欧美色图| 欧美亚洲精品天堂| 欧美丝袜一区二区| 懂色av蜜臀av粉嫩av喷吹| 欧美三级视频在线播放| 91国产免费视频| 欧美一区二区三区视频免费| 国产av精国产传媒| 精品1区2区在线观看| 久草视频视频在线播放| 日韩中文字幕视频在线观看| 黄视频网站在线| 亚洲免费av片| www.av在线| 久久综合久中文字幕青草| 污污视频在线看| 5252色成人免费视频| 网友自拍亚洲| 91久久精品视频| 加勒比视频一区| 日韩成人在线资源| 久久久久久影院| 妞干网在线观看视频| 丝袜国产日韩另类美女| 亚洲精品中文字幕乱码无线| www.日韩在线| 久久久精品成人| 亚洲黄色性网站| 日韩综合在线观看| 日韩一区二区三区精品视频| 人人妻人人澡人人爽精品日本 | 91国产丝袜在线播放| 91成人在线免费| 精品调教chinesegay| 91短视频版在线观看www免费| 欧美激情中文网| 日韩中文视频| 成人在线免费网站| 精品久久视频| 国产成人在线小视频| 日韩和的一区二区| 你懂的在线观看网站| 中国av一区二区三区| 国产无遮挡免费视频| 欧美日韩视频不卡| 你懂得网站在线| 欧美成人免费va影院高清| 手机在线理论片| 51午夜精品| 成人久久电影| 国产无限制自拍| 国模一区二区三区白浆| 久久精品国产亚洲av久| 亚洲一区国产视频| 中文字幕在线观看第二页| 亚洲国产美女精品久久久久∴| 九七久久人人| 国产精品扒开腿做爽爽爽视频| 97成人在线| 色呦呦网站入口| 日韩中文欧美在线| 免费看黄色aaaaaa 片| 一区二区三区日韩欧美精品| 在线观看免费观看在线| 亚洲欧美日韩在线高清直播| 国产精品一区hongkong| 91文字幕巨乱亚洲香蕉| 日韩一区三区| 亚洲精品自拍网| 久久九九国产精品| 国产一级大片在线观看| 欧美一区二区三区在| 天堂地址在线www| 国产精品久久91| 国产精品美女久久久久久不卡| 日韩精品―中文字幕| a级精品国产片在线观看| 国产亚洲成人av| 日韩精品自拍偷拍| 亚洲电影视频在线| 亚洲综合一区二区不卡| 欧美~级网站不卡| 自拍一级黄色片| 亚洲精品一二三四区| 国产xxxx在线观看| 欧美乱人伦中文字幕在线| 日韩城人网站| 国产一区一区三区| 国产精一区二区三区| 超碰手机在线观看| 日韩视频永久免费| 深夜国产在线播放| 肥熟一91porny丨九色丨| 国内精品久久久久久久97牛牛| 亚洲精品鲁一鲁一区二区三区| 亚洲综合激情另类小说区| 韩国av在线免费观看| 午夜精品一区二区三区在线 | 国产一区二区三区免费观看| 欧美做爰爽爽爽爽爽爽| 日韩精品一区二区三区老鸭窝| 欧美黑人猛交的在线视频| 国产精品一区免费观看| 国产精品久久久久久模特| 日韩人妻无码一区二区三区| 色香蕉成人二区免费| 成人精品一区二区三区校园激情| 国产日韩精品在线| 午夜电影亚洲| 中文字幕一区二区人妻在线不卡 | 国产熟女一区二区三区五月婷| 久久中文精品视频| 狠狠久久伊人| 免费男同深夜夜行网站| 国产精品免费视频观看| 99久久精品无免国产免费| 亚洲2020天天堂在线观看| 国产一区网站| 亚洲精品中文字幕乱码无线| 精品久久久久久亚洲国产300| 国产黄色片在线观看| 成人午夜激情网| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲黄色在线网站| 欧美美女喷水视频| а√天堂8资源在线| 亚洲一区不卡在线| 成人国产在线观看| 日韩精选在线观看| 久久久久久成人| 青青草原综合久久大伊人精品| 欧美一级大片免费看| 精品久久久在线观看| 日本欧美在线视频免费观看| 国产精品久久精品国产| 喷水一区二区三区| 国产一级av毛片| 精品国产视频在线| 亚洲人成网www| 免费看的av网站| 91成人看片片| 2019中文字幕在线电影免费|