2010-03-17 157 views
0

我基本上希望將文件從客戶端傳輸到文件存儲服務器,而無需實際登錄到服務器,以便客戶端無法直接訪問服務器上的存儲位置。只有當我通過Windows登錄手動登錄到存儲服務器時,我纔可以這樣做。我不想那樣做。這是一個基於Web的應用程序。將ASP.NET文件從本地計算機傳輸到另一臺計算機

使用下面的鏈接,我爲我的應用程序編寫了一個代碼。我沒有能夠得到它,雖然正確,請參閱該鏈接,幫我一下吧......加時賽

Uploading files to file server using webclient class


以下是我的代碼: -

protected void Button1_Click(object sender, EventArgs e) 
{ 

    filePath = FileUpload1.FileName;  
    try 
    { 
     WebClient client = new WebClient(); 

     NetworkCredential nc = new NetworkCredential(uName, password); 

     Uri addy = new Uri("\\\\192.168.1.3\\upload\\"); 
     client.Credentials = nc; 
     byte[] arrReturn = client.UploadFile(addy, filePath); 

     Console.WriteLine(arrReturn.ToString()); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 

} 

的下面的行不執行......

byte[] arrReturn = client.UploadFile(addy, filePath); 

這是錯誤我得到:

An exception occurred during a WebClient request

+0

嗨, 有可能是有內部異常嗎?將本地共享映射爲驅動器是一種選擇嗎? -sa – Sascha 2010-03-17 06:39:22

+0

顯示ex.ToString()而不是ex.Message,您將得到完整的異常。編輯您的問題以包含完整的例外。 – 2010-03-17 06:51:44

回答

1

啊,看起來(並有很好的理由),FileUpload只能將文件保存到Web服務器及其驅動器。所以我的第一個想法是行不通的。

但是:如果您擁有必要的權限,是否可以將使用標準System.IO調用的文件上傳到FileUpload中的文件保存到該UNC路徑中?喜歡的東西:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     string completeFileName = 
      Path.Combine(@"\\192.168.1.3\upload", FileUpload1.FileName); 

     BinaryReader br = new BinaryReader(FileUpload1.PostedFile.InputStream); 

     FileStream fstm = new FileStream(completeFileName, FileMode.Create, FileAccess.ReadWrite); 
     BinaryWriter bw = new BinaryWriter(fstm); 

     byte[] buffer = br.ReadBytes(FileUpload1.PostedFile.ContentLength); 
     br.Close(); 

     bw.Write(buffer); 
     bw.Flush(); 
     bw.Close(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

如果你希望非常大的文件上傳,您可能希望將數據從BinaryReader以塊的形式傳送到BinaryWriter - 而不是分配只是一個單一的緩衝區 - 不過這只是一個實現細節,真的。

+0

它給了我這個錯誤: - 登錄失敗:未知的用戶名或密碼錯誤。 – Imcl 2010-03-17 07:10:28

+0

@Imcl:是的,似乎FileUpload控件不能寫入遠程位置 - 更新我的回答 – 2010-03-17 07:37:14

+0

這條線沒有執行,它進入catch塊顯示與上面相同的錯誤: - FileStream fstm = new FileStream(completeFileName ,FileMode.Create,FileAccess.ReadWrite); – Imcl 2010-03-17 07:50:32

1

我前幾天遇到了同樣的問題,我通過在Web服務器上和具有相同用戶名和密碼的存儲服務器上創建用戶來解決此問題,然後在web.config文件中模擬用戶。

注:用戶應該有,你要存儲目錄中的文件RW權限。

相關問題