服务器端文件上传不保存我的文件

时间:2011-11-29 09:19:30

标签: asp.net http-post

在服务器端,我有这些:

ASPX:

<form id="form1" runat="server" enctype="multipart/form-data">
    <input type="file" id="myFile" name="myFile" />
    <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" />
</form>

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);
        }

对于客户端应用程序:它是一个简单的webclient,使用uploadfileasync通过HTTP POST到aspx页面。

问题:使用aspx页面正常保存文件,但对于客户端应用程序,文件会上传,但不会保存在文件夹中。可能会发生什么?我很确定这是服务器方面的问题。

更新:添加了客户端代码。客户端应用程序适用于另一个(但是经典的)服务器,因此我怀疑客户端是否需要修复。

1 个答案:

答案 0 :(得分:0)

重新发表我的评论,因为Jan从未发布过答案。

感谢Jan指出我正确的方向。文件接收代码应该在page_load中,这对我来说是粗心的。另一个问题是文件索引的字符串名称(Request.Files [“myFile”]),它应该与aspx页面中的输入控件具有相同的id。