摘要:自帶的上傳進度功能,需要擴展支持。于是想到利用的模塊來實現(xiàn)上傳進度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時執(zhí)行超時引起錯誤。新建一個對象,把設置成剛上傳的文件。
Drupal 8 自帶的上傳進度功能,需要PECL uploadprogress library擴展支持。
安裝后發(fā)現(xiàn)效果還是不太好,不知道什么原因,進度條不能正常顯示,而且上傳較大文件時,速度比較慢。于是想到利用Nginx的uploadprogres模塊來實現(xiàn)上傳進度。
這個模塊需要在編譯安裝的時候加上,編譯安裝請看:編譯安裝Nginx以及配置運行Drupal 8,實現(xiàn)上傳進度功能
搜索了一下,找到一個模塊:FileField Nginx Progress,不過只有Drupal7版本的,于是看了一下代碼,了解了實現(xiàn)思路,根據(jù)這個思路,做了一個Drupal 8版本的出來。
模塊地址:upload_progress
由于Nginx uploadprogress模塊的上傳進度和Drupal自帶的上傳進度獲取方式不同,所以要把從Nginx獲取到的進度信息,轉換成Drupal需要的格式,再返回給Drupal前端。
簡單的說一下實現(xiàn)的思路:
定義獲取進度信息的路由
在Nginx里設置獲取進度信息的URL。
定義一個路由,和對應的控制器(controller)。
在控制器里從第一步定義的URL獲取到的信息,轉換成Drupal需要的格式,然后返回給前端。
自定義文件控件
基于FileWidget自定義一個文件控件(widget),這樣可以比較方便的覆寫文件處理方法。
覆寫控件的settingsForm方法,目的是實現(xiàn)選擇進度指示器的類型(如果Drupal檢測到?jīng)]有安裝PECL uploadprogress library擴展,不會顯示選擇進度指示器的表單)。
然后覆寫process方法,目的是為表單預先設置一些內(nèi)容。Nginx uploadprogress模塊需要表單提交時以QueryString方式提供一個X-Progress-ID,而且還需要把獲取進度信息的URL修改成自定義的路由。這兩個動作都是在這一步完成的。
覆寫value方法,這個方法是提交文件時回調(diào)的方法,后面使用Nginx upload模塊替代PHP的文件上傳功能,會用到這個方法。
設置進度指示器為進度條
結構 --> 內(nèi)容類型 --> 管理表單顯示。把需要進度條的字段的控制器,修改成上面自定義的控制器。
點擊字段后面的齒輪圖標,選擇進度指示器為進度條。
以上步驟完成后,就可以實現(xiàn)進度條功能了。
接下來使用Nginx upload模塊替代PHP的文件上傳功能,目的是提高文件上傳的性能。由于Nginx擴展是使用C語言編寫的,理論上來說會比PHP性能好很多。而且可以避免上傳大文件時PHP執(zhí)行超時引起錯誤。
根據(jù)前面提供的Nginx文章,配置好Nginx之后,就可以進行以下操作。
根據(jù)上面的方法,覆寫value方法。
根據(jù)Nginx里自定義的字段信息,獲取POST內(nèi)容(文件名,路徑,大小,類型等)。
把文件移動到目標目錄。
新建一個File對象,把uri設置成剛上傳的文件。
把value方法的input["fid"]值設置成新創(chuàng)建的File對象的ID。
調(diào)用parent::value方法。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/39471.html
摘要:自帶的上傳進度功能,需要擴展支持。于是想到利用的模塊來實現(xiàn)上傳進度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時執(zhí)行超時引起錯誤。新建一個對象,把設置成剛上傳的文件。 Drupal 8 自帶的上傳進度功能,需要PECL uploadprogress library擴展支持。安裝后發(fā)現(xiàn)效果還是不太好,不知道什么原因,進度條不能正常顯示,而且上傳較大...
摘要:下載以及相關模塊下載以及模塊并解壓。接著執(zhí)行,即可完成編譯安裝。運行需要的配置首先需要在的上下文里增加一條這條是表示每上傳就更新進度信息。 這篇文章的目的是在編譯安裝Nginx的同時,安裝upload和uploadprogress模塊,以及運行Drupal 8所需要的配置。由于使用的是Raspberry pi 3B,所以系統(tǒng)用的Raspbian,Debian/Ubuntu應該也是差不多...
摘要:一概念簡述是由淘寶開發(fā)平臺部資深架構師余慶開發(fā),是一個輕量級高性能的開源分布式文件系統(tǒng),用純語言開發(fā),包括文件存儲文件同步文件訪問上傳下載存取負載均衡在線擴容相同內(nèi)容只存儲一份等功能,適合有大容量存儲需求的應用或系統(tǒng)。故障恢復后,再次奪回。 一、概念簡述 FastDFS 是由淘寶開發(fā)平臺部資深架構師余慶開發(fā),是一個輕量級、高性能的開源分布式文件系統(tǒng)( Distributed File ...
閱讀 2289·2021-09-30 09:48
閱讀 3666·2021-09-24 10:27
閱讀 1830·2021-09-22 15:32
閱讀 2060·2021-08-09 13:44
閱讀 3610·2019-08-30 15:55
閱讀 1084·2019-08-29 17:12
閱讀 2090·2019-08-29 17:05
閱讀 2949·2019-08-29 13:43