在服务器端,我有这些:
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页面正常保存文件,但对于客户端应用程序,文件会上传,但不会保存在文件夹中。可能会发生什么?我很确定这是服务器方面的问题。
更新:添加了客户端代码。客户端应用程序适用于另一个(但是经典的)服务器,因此我怀疑客户端是否需要修复。
答案 0 :(得分:0)
重新发表我的评论,因为Jan从未发布过答案。
感谢Jan指出我正确的方向。文件接收代码应该在page_load中,这对我来说是粗心的。另一个问题是文件索引的字符串名称(Request.Files [“myFile”]),它应该与aspx页面中的输入控件具有相同的id。