寫在前面
客戶有這樣的一個需求,針對項目中文檔共享的模塊,客戶提出如果用戶上傳特別的大,或者時間久了硬盤空間就會吃滿,能不能將這些文件上傳到其他的服務器?然后就稍微研究了下這方面的東西,上傳到網絡中的某個共享的文件夾下確實能做到的。
解決方案
環境描述:
若A為web服務器,B為要存放文檔的文件服務器。
如果通過A中的某個頁面將文件上傳到服務器B,則需要如下三個步驟。
1、在服務器B上面建立共享文件夾,步驟如下:
編輯貢獻文件夾的權限,添加一個用戶,並給它開放讀寫的權限。
2.共享文件夾建立之后,假如文件服務器B的IP地址為:192.168.83.123,可通過運行訪問該文件夾是否共享成功。
3、簡單測試,可以使用Uploadify進行上傳測試。
關於uploadify的使用就不再做介紹了
修改UploadHander.ashx一般處理程序,核心代碼如下:
1 /// <summary> 2 /// 處理請求的方法 3 /// </summary> 4 /// <param name="context">http上下文</param> 5 public void ProcessRequest(HttpContext context) 6 { 7 //獲取或設置輸出流的HTTP MIME類型 8 context.Response.ContentType = "text/plain"; 9 //獲取上傳的文件 10 HttpPostedFile httpPostedFile = context.Request.Files["Filedata"]; 11 //如果接收到文件則httpPostedFile不為null,則對上傳的文件進行處理,否則向客戶端返回0 12 if (httpPostedFile != null) 13 { 14 15 //獲取文件名 16 string strfileName = httpPostedFile.FileName; 17 18 //獲取擴展名 19 string strExt = Path.GetExtension(strfileName); 20 21 //允許上傳的文件類型 22 string[] strExts = { ".jpg", ".png", ".gif", ".zip", ".rar" }; 23 24 //如果上傳的文件類型,在被允許的類型中,則保存,否則向客戶端輸出“不允許上傳”的信息提示。 25 if (strExts.Contains(strExt)) 26 { 27 //上傳目錄 28 DirectoryInfo theFolder = new DirectoryInfo(@"\\192.168.83.123\upload\"); 29 //定義新的文件名,格式:“201404210323146909_文件名.zip” 30 string strNewName = DateTime.Now.ToString("yyyyMMddhhmmssffff") + "_" + strfileName; 31 string path = Path.Combine(theFolder.FullName, strNewName); 32 //保存文件到文件服務器 33 httpPostedFile.SaveAs(path); 34 //將文件的保存的相對路徑輸出到客戶端 35 context.Response.Write(path); 36 } 37 else 38 { 39 context.Response.Write("不允許上傳"); 40 } 41 } 42 else 43 { 44 //沒有文件,向客戶端輸出0 45 context.Response.Write("0"); 46 } 47 }
4、在全局處理程序Global.asax.cs中添加如下代碼,應用程序啟動時,創建訪問文件服務器B的憑證。
核心代碼如下:
1 protected void Application_Start(object sender, EventArgs e) 2 { 3 //System.Diagnostics.Process.Start("net.exe", "use \\\\B服務器的IP\\共享文件夾 \"B服務器上的密碼\" /user:\"B服務器上的用戶名\""), 4 System.Diagnostics.Process.Start("net.exe", "use \\\\192.168.83.123\\upload \"123456\" /user:\"xxxdev\\dev\""); 5 }
這就話的意思是,在應用程序已啟動的時候,就為訪問B服務器提供憑證。
將網站部署到iis上,如果發現上傳不成功,可嘗試為共享文件夾添加Everyone,並給與完全控制權限。
總結
文件共享也可參照:http://www.cnblogs.com/yunspider/p/5033439.html
原文:http://www.cnblogs.com/wolf-sun/p/4198238.html