服务器端的文件上传不保存我的文件
问题描述:
在服务器端,我有这些:服务器端的文件上传不保存我的文件
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页面保存,但是对于客户端应用程序,文件会上载,但不会保存在文件夹中。可能发生了什么?我很确定这是一个服务器端问题。
更新:添加了客户端代码。客户端应用程序工作在另一个(但经典)服务器,所以我怀疑客户端是需要修复的客户端。
答
转发我的评论,因为Jan从未发布过答案。
感谢Jan为我指出了正确的方向。文件接收代码应该在page_load中,这对我来说很粗心。另一个问题是文件索引的字符串名称(Request.Files [“myFile”]),它应该与aspx页面中的输入控件具有相同的id。
对不起,请解释,由客户端应用程序,你的意思是一个单独的程序? – CouncilScribe
你期望在客户端的文件中发生什么?您的代码将文件上传到服务器并将其存储在“文件”文件夹中。 – Jan
@jan正好。非常简单。发布文件流。服务器获取并且(或应该)保存在“文件”文件夹中。这适用于运行在ASP classic上的不同服务器应用程序。问题是文件被上传,但永远不会创建/保存在文件夹 – Bahamut