2011-11-29 138 views
0

在服務器端,我有這些:服務器端的文件上傳不保存我的文件

ASPX:

​​

CS:

protected void btnUploadClick(object sender, EventArgs e) 
{ 
    HttpPostedFile file = Request.Files["myFile"]; 
    if (file != null && file.ContentLength > 0) 
    { 
     string fname = Path.GetFileName(file.FileName); 
     file.SaveAs(Server.MapPath(Path.Combine("~/Files/", fname))); 
    } 
} 

客戶端應用程序:它使用WebClient,但我認爲這不需要任何解決方案,因爲webclient非常簡單直接。不管怎麼說,這裏的代碼

private void btnStart_Click(object sender, RoutedEventArgs e) 
     {    

      Uri uploadAddress = new Uri("http://localhost/WebUpload/default.aspx"); 

       WebClient wc = new WebClient(); 
       wc.UploadProgressChanged += new UploadProgressChangedEventHandler(wc_UploadProgressChanged); 
       wc.UploadFileCompleted += new UploadFileCompletedEventHandler(wc_UploadFileCompleted); 
       wc.Credentials = CredentialCache.DefaultCredentials; 

       wc.UploadFile(uploadAddress, "POST", m_filename); 

     } 

     void wc_UploadFileCompleted(object sender, UploadFileCompletedEventArgs e) 
     { 
      if (e.Error != null) 
       txtProgress.Content = e.Error.Message; 
      else 
       txtProgress.Content = "Completed"; 
     } 

     void wc_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
     { 
      txtProgress.Content = String.Format("{0}% completed", 
       e.ProgressPercentage); 
     } 

爲客戶端應用程序:它使用uploadfileasync通過HTTP POST到aspx頁面的簡單Web客戶端。

問題:文件通常使用aspx頁面保存,但是對於客戶端應用程序,文件會上載,但不會保存在文件夾中。可能發生了什麼?我很確定這是一個服務器端問題。

更新:添加了客戶端代碼。客戶端應用程序工作在另一個(但經典)服務器,所以我懷疑客戶端是需要修復的客戶端。

+0

對不起,請解釋,由客戶端應用程序,你的意思是一個單獨的程序? – CouncilScribe

+0

你期望在客戶端的文件中發生什麼?您的代碼將文件上傳到服務器並將其存儲在「文件」文件夾中。 – Jan

+0

@jan正好。非常簡單。發佈文件流。服務器獲取並且(或應該)保存在「文件」文件夾中。這適用於運行在ASP classic上的不同服務器應用程序。問題是文件被上傳,但永遠不會創建/保存在文件夾 – Bahamut

回答

0

轉發我的評論,因爲Jan從未發佈過答案。

感謝Jan爲我指出了正確的方向。文件接收代碼應該在page_load中,這對我來說很粗心。另一個問題是文件索引的字符串名稱(Request.Files [「myFile」]),它應該與aspx頁面中的輸入控件具有相同的id。

相關問題