Winform端上传图片到服务器

转载自  在winform实现文件上传到服务器

 

 

webform上传文件可能大家都写过很多,一个HtmlInputFile.PostedFile.SaveAs就搞定了,不过不知道大家有没有在winform做过向服务器上传文件呢?

一个很自然的想法是用Web Services,呵呵,我也很喜欢Web Services,但是后来我在网上查了一下资料,发现了另外一种比简单实用的方法,

通过WebClient(或者HttpWebRequest)来模拟HTTP的POST动作来实现。写出来和大家探讨一下,那位大虾写个Web Services的方法来回应讨论一下更好。

首先在服务器部署一个网站,呵呵,因为毕竟是模拟HTTP了。比如说是http://localhost:1878/UploadFileWebSite/UploadFile1.aspx

在这个页面的pageload里面加入下面的代码,用来接收winform传过来的file,保存文件在服务器。

 

        foreach (string f in Request.Files.AllKeys)
        {
            HttpPostedFile file = Request.Files[f];
            file.SaveAs(@"c:\" + file.FileName);
        }

 


至于winform那边,就只是要调用一下WebClient的UploadFile方法了。

public bool uploadFileByHttp(string webUrl,string localFileName)
{
    // 检查文件是否存在
    if (!System.IO.File.Exists(localFileName)) 
    {
         MessageBox.Show("{0} does not exist!", localFileName);
         return false;
    }
    try
    {
         System.Net.WebClient myWebClient = new System.Net.WebClient();
         myWebClient.UploadFile(webUrl, "POST", localFileName);
    }
    catch
    {               
         return false;
    }
    return true;
}

 

调用:
this.uploadFileByHttp("http://localhost:1878/UploadFileWebSite/UploadFile.aspx", @"D:\1.txt");
这个方法的缺点是不能断点续传,速度比较慢,所以不能上传大文件。

posted @ 2016-03-17 10:32  代码工人有力量  阅读(5804)  评论(1编辑  收藏  举报