做了接近兩年的外包,如今回歸到做公司自己的產品,不同的工作模式就會有不同的系統設計,先看一**:
與前者相比,後者在應用層和展現層做了更清晰的劃分,好處不可描述。但隨之而來的問題是不同站點間的檔案上傳混亂不易管理,於是分離出檔案伺服器,統一檔案的上傳、訪問、管理。下面是我在分離檔案伺服器過程中遇到的一些問題以及解決方案(以為例)。
上傳配置
上傳配置包括限制上傳的型別、大小、尺寸、以及水印型別、水印檔案位置等等。具體可按自己的需求進行配置,並不侷限於此。
由於系統還很稚嫩,也沒有傳說中所有站點通用的配置中心,那麼後台系統需要對檔案伺服器配置進行管理的方式大概有兩種:1、配置資料儲存在資料庫,提供給這兩個站點同時訪問。
2、配置資料獨立儲存於檔案伺服器,管理站點通過介面獲取以及修改。
因為現階段我們對於管理的需求不是很強烈,整個檔案伺服器幾乎都沒有與資料庫打交道的需求,所以我們選擇了第二種方式。至於通過介面修改配置的安全性,我們使用的是ip白名單限制。
跨域上傳檔案
跨域上傳檔案主要涉及到ajax跨域上傳檔案以及ueditor跨域。跨域請求時瀏覽器會首先傳送一次options嗅探,同時header帶上origin,判斷是否有跨域請求許可權,伺服器響應access control allow origin的值,供瀏覽器與origin匹配,如果匹配則正式傳送post請求。
知道原理解決起來就方便多了,兩個步驟:
1、在webconfig中新增:
"2、在global.asax中新增**處理瀏覽器發起的options請求:access-control-allow-origin
" value="
*" />
"access-control-allow-methods
" value="
post, put />
protected我們的檔案上傳使用的是webapi,mvc和webform應該也可以使用相同的方式,或者選擇第三方庫如:microsoft.aspnet.webapi.cors來處理,有興趣的可以自己嘗試,我覺得沒那麼麻煩也就沒有繼續折騰。sender, eventargs e)
}
關於ueditor將上傳的檔案儲存在檔案伺服器,最簡單的方式是將ueditor直接部署在檔案伺服器,然後使用網域名稱引入js,如果上傳還是出現跨域問題,並且檔案伺服器和使用ueditor的**根網域名稱相同,可按下面兩個步驟進行解決:
1、在檔案伺服器中ueditor/dialogs/internal.js頂部新增**:document.domain = "根網域名稱";
2、在引用ueidtor的頁面頂部js中新增document.domain = "根網域名稱";
最後,ueditor的單圖上傳死活跨域上傳失敗,對著原始碼折騰了四個小時無果,解決了跨域顯示出問題,解決了顯示跨域又不行,後面看到官方文件上的說明後
也就暫時放棄了,有興趣的朋友可以嘗試一下。
檔案儲存
上傳檔案的儲存基本上人人都會,對於webapi檔案上傳有疑惑的可以參考這篇部落格,講的非常詳細了:
拿到上傳的檔案後要做的事情就是根據自己的檔案上傳配置做驗證,過濾非法的檔案並對做處理,如新增水印、生成縮圖等等。網上**有很多,並且每個系統對於水印和縮圖的需求會不相同,這裡就不貼**了。比如我們的就有兩個比較有意思的需求:
1、水印是按照800*600的背景圖做的,要求對上傳的按最小的長寬比對水印進行縮放後再新增到上。
順便提一下對ueditor上傳的進行處理(如:打水印),網上也有不少相關的帖子,大概思路無非就是重寫上傳的路徑,然後再按ueditor的格式返回資料(在xx版本所有檔案上傳統一為乙個路徑之後,這個方式做起來就不是那麼優雅了)。我們的做法是:嗯~~~,改原始碼。步驟也很簡單:
1、ueditor/net/controller.ashx中的配置改為從我們的上傳配置中讀取。
看了ueditor檔案上傳的服務端**,對於檔案上傳又有了新的認識,其實可以拋開所謂webform、mvc、webapi的區別,直接使用ihttphandler處理上傳的流,簡單直接又粗暴得無可挑剔。
fastdfs檔案伺服器實現檔案上傳
引入依賴 commons fileupload groupid commons fileupload artifactid 1.3.1 version dependency org.csource.fastdfs groupid fastdfs artifactid 1.27 version dep...
檔案伺服器
實現對檔案增刪改查,若是伺服器需要考慮的壓縮 檔案你儲存在電腦裡面也可以,儲存在電腦裡面給乙個路徑就可以了,為什麼要用檔案伺服器 對檔案的操作有記錄 比如增刪改查,可以花式查詢並對結果做操作,之前需要用比較複雜的正則才可以 做到,比如按照日期查詢,尤其是數量高到幾萬的時候,window自帶的檔案管理...
檔案伺服器與web伺服器分離的的
要實現的功能是 在一台網路伺服器上啟動了tomcat伺服器,執行乙個很大的 使用者可以登入 然後上傳檔案和 等,由於擔心硬碟空間的問題,希望使用者上傳的檔案等,能夠上傳並儲存到另一台機器上,同時使用者登入後又可以實時檢視到自己之前上傳的檔案,並且需要保證檔案和 安全性。在iteye 上看到有人說 把...