国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Drupal 8 結合Nginx實現文件上傳進度,提高上傳文件性能

keithxiaoy / 706人閱讀

摘要:自帶的上傳進度功能,需要擴展支持。于是想到利用的模塊來實現上傳進度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時執行超時引起錯誤。新建一個對象,把設置成剛上傳的文件。

Drupal 8 自帶的上傳進度功能,需要PECL uploadprogress library擴展支持。
安裝后發現效果還是不太好,不知道什么原因,進度條不能正常顯示,而且上傳較大文件時,速度比較慢。于是想到利用Nginx的uploadprogres模塊來實現上傳進度。

這個模塊需要在編譯安裝的時候加上,編譯安裝請看:編譯安裝Nginx以及配置運行Drupal 8,實現上傳進度功能

搜索了一下,找到一個模塊:FileField Nginx Progress,不過只有Drupal7版本的,于是看了一下代碼,了解了實現思路,根據這個思路,做了一個Drupal 8版本的出來。
模塊地址:upload_progress

由于Nginx uploadprogress模塊的上傳進度和Drupal自帶的上傳進度獲取方式不同,所以要把從Nginx獲取到的進度信息,轉換成Drupal需要的格式,再返回給Drupal前端。

簡單的說一下實現的思路:

定義獲取進度信息的路由

在Nginx里設置獲取進度信息的URL。

定義一個路由,和對應的控制器(controller)。

在控制器里從第一步定義的URL獲取到的信息,轉換成Drupal需要的格式,然后返回給前端。

自定義文件控件

基于FileWidget自定義一個文件控件(widget),這樣可以比較方便的覆寫文件處理方法。

覆寫控件的settingsForm方法,目的是實現選擇進度指示器的類型(如果Drupal檢測到沒有安裝PECL uploadprogress library擴展,不會顯示選擇進度指示器的表單)。

然后覆寫process方法,目的是為表單預先設置一些內容。Nginx uploadprogress模塊需要表單提交時以QueryString方式提供一個X-Progress-ID,而且還需要把獲取進度信息的URL修改成自定義的路由。這兩個動作都是在這一步完成的。

覆寫value方法,這個方法是提交文件時回調的方法,后面使用Nginx upload模塊替代PHP的文件上傳功能,會用到這個方法。

設置進度指示器為進度條

結構 --> 內容類型 --> 管理表單顯示。把需要進度條的字段的控制器,修改成上面自定義的控制器。

點擊字段后面的齒輪圖標,選擇進度指示器為進度條。

以上步驟完成后,就可以實現進度條功能了。
接下來使用Nginx upload模塊替代PHP的文件上傳功能,目的是提高文件上傳的性能。由于Nginx擴展是使用C語言編寫的,理論上來說會比PHP性能好很多。而且可以避免上傳大文件時PHP執行超時引起錯誤。
根據前面提供的Nginx文章,配置好Nginx之后,就可以進行以下操作。

根據上面的方法,覆寫value方法。

根據Nginx里自定義的字段信息,獲取POST內容(文件名,路徑,大小,類型等)。

把文件移動到目標目錄。

新建一個File對象,把uri設置成剛上傳的文件。

把value方法的input["fid"]值設置成新創建的File對象的ID。

調用parent::value方法。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39471.html

相關文章

  • Drupal 8 結合Nginx實現文件上傳進度提高上傳文件性能

    摘要:自帶的上傳進度功能,需要擴展支持。于是想到利用的模塊來實現上傳進度。接下來使用模塊替代的文件上傳功能,目的是提高文件上傳的性能。而且可以避免上傳大文件時執行超時引起錯誤。新建一個對象,把設置成剛上傳的文件。 Drupal 8 自帶的上傳進度功能,需要PECL uploadprogress library擴展支持。安裝后發現效果還是不太好,不知道什么原因,進度條不能正常顯示,而且上傳較大...

    SwordFly 評論0 收藏0
  • 編譯安裝Nginx以及配置運行Drupal 8實現上傳進度功能

    摘要:下載以及相關模塊下載以及模塊并解壓。接著執行,即可完成編譯安裝。運行需要的配置首先需要在的上下文里增加一條這條是表示每上傳就更新進度信息。 這篇文章的目的是在編譯安裝Nginx的同時,安裝upload和uploadprogress模塊,以及運行Drupal 8所需要的配置。由于使用的是Raspberry pi 3B,所以系統用的Raspbian,Debian/Ubuntu應該也是差不多...

    mist14 評論0 收藏0
  • 分布式文件存儲 FastDFS

    摘要:一概念簡述是由淘寶開發平臺部資深架構師余慶開發,是一個輕量級高性能的開源分布式文件系統,用純語言開發,包括文件存儲文件同步文件訪問上傳下載存取負載均衡在線擴容相同內容只存儲一份等功能,適合有大容量存儲需求的應用或系統。故障恢復后,再次奪回。 一、概念簡述 FastDFS 是由淘寶開發平臺部資深架構師余慶開發,是一個輕量級、高性能的開源分布式文件系統( Distributed File ...

    AlphaWallet 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<