C#winform上传文件到服务器
【参考网址】http://www.cnblogs.com/lmjob/archive/2008/10/14/1310617.html
【方法】
1.首先创建一个windows应用程序,然后为了本地测试创建一个WEB应用程序。
在windows窗体上拖一个Button,点击事件代码:
1 private void button2_Click(object sender, EventArgs e) 2 { 3 WebClient myWebClient = new WebClient(); 4 FolderBrowserDialog fbDialog = new FolderBrowserDialog(); 5 if (fbDialog.ShowDialog() == DialogResult.OK) 6 { 7 string directoryPath = fbDialog.SelectedPath; 8 string[] fn = Directory.GetFiles(directoryPath);//E:\李四\区划所\样方数据\玉米\ym2011yj\photo\ym370082011 9 foreach (string s in fn)//E:\李四\区划所\样方数据\玉米\ym2011yj\photo\ym370082011\ym370082011EEF.JPG 10 { 11 myWebClient.UploadFile("http://localhost:2610/WebSite/Default.aspx", "POST", s); 12 } 13 //myWebClient.QueryString["testkey"] = "cdhcdhcdh"; 14 MessageBox.Show("已上传"); 15 } 16 }
也可以采用另外一种:
1 public bool uploadFileByHttp(string webUrl,string localFileName) 2 { 3 // 检查文件是否存在 4 if (!System.IO.File.Exists(localFileName)) 5 { 6 MessageBox.Show("{0} does not exist!", localFileName); 7 return false; 8 } 9 try 10 { 11 System.Net.WebClient myWebClient = new System.Net.WebClient(); 12 myWebClient.UploadFile(webUrl, "POST", localFileName); 13 } 14 catch 15 { 16 return false; 17 } 18 return true; 19 } 20 21 //调用方法属于远程服务器的地址,和保存文件的地址 22 this.uploadFileByHttp(" http://localhost:1878/UploadFileWebSite/UploadFile.aspx", @"D:/1.txt");
后台测试代码:
protected void Page_Load(object sender, EventArgs e) { foreach (string f in Request.Files.AllKeys) { HttpPostedFile file = Request.Files[f]; file.SaveAs(@"C:/" + file.FileName); } }
前启动WEB查看服务器地址,并据此正确填写窗体程序的UploadFile()方法的地址参数。然后启动窗体应用程序点击选取文件夹,其可将文件夹内的文件上传到服务器,然后根据程序保存到本地C盘根目录下。
【可以完善可待思索的问题】
1.TCP与Http上传,各有何优劣该如何选择,同时TCP上传下载也不大理解,编写的类似程序较少。
2.如何Winform程序传递参数给WEB页面,WEB通过Request.Parameters[" "]获得呢