[Asp.net]通過uploadify將文件上傳到B服務器的共享文件夾中


寫在前面

客戶有這樣的一個需求,針對項目中文檔共享的模塊,客戶提出如果用戶上傳特別的大,或者時間久了硬盤空間就會吃滿,能不能將這些文件上傳到其他的服務器?然后就稍微研究了下這方面的東西,上傳到網絡中的某個共享的文件夾下確實能做到的。

解決方案

環境描述:

若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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM