怎么样使用WebClient实现文件上传?
<xmp>
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Net;
using System.Threading;
namespace UpLoad
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtURI;
private System.Windows.Forms.Button btnSelect;
private System.Windows.Forms.Button btnUpLoad;
private System.Windows.Forms.StatusBar stBar;
private System.Windows.Forms.OpenFileDialog openFile;
private System.Windows.Forms.ListBox lstFiles;
private System.Windows.Forms.Button btnDelete;
private WebClient client=new WebClient();
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txtURI = new System.Windows.Forms.TextBox();
this.btnSelect = new System.Windows.Forms.Button();
this.btnUpLoad = new System.Windows.Forms.Button();
this.stBar = new System.Windows.Forms.StatusBar();
this.openFile = new System.Windows.Forms.OpenFileDialog();
this.lstFiles = new System.Windows.Forms.ListBox();
this.btnDelete = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(48, 23);
this.label1.TabIndex = 0;
this.label1.Text = "上传到:";
//
// label2
//
this.label2.Location = new System.Drawing.Point(8, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(64, 23);
this.label2.TabIndex = 1;
this.label2.Text = "上传文件:";
//
// txtURI
//
this.txtURI.Location = new System.Drawing.Point(80, 16);
this.txtURI.Name = "txtURI";
this.txtURI.Size = new System.Drawing.Size(256, 21);
this.txtURI.TabIndex = 2;
this.txtURI.Text = "";
//
// btnSelect
//
this.btnSelect.Location = new System.Drawing.Point(336, 56);
this.btnSelect.Name = "btnSelect";
this.btnSelect.TabIndex = 4;
this.btnSelect.Text = "选择...";
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
//
// btnUpLoad
//
this.btnUpLoad.Location = new System.Drawing.Point(336, 120);
this.btnUpLoad.Name = "btnUpLoad";
this.btnUpLoad.TabIndex = 5;
this.btnUpLoad.Text = "开始上传";
this.btnUpLoad.Click += new System.EventHandler(this.btnUpLoad_Click);
//
// stBar
//
this.stBar.Location = new System.Drawing.Point(0, 176);
this.stBar.Name = "stBar";
this.stBar.ShowPanels = true;
this.stBar.Size = new System.Drawing.Size(424, 22);
this.stBar.TabIndex = 6;
//
// openFile
//
this.openFile.Multiselect = true;
this.openFile.Title = "选择上传问文件";
//
// lstFiles
//
this.lstFiles.ItemHeight = 12;
this.lstFiles.Location = new System.Drawing.Point(80, 56);
this.lstFiles.Name = "lstFiles";
this.lstFiles.Size = new System.Drawing.Size(256, 88);
this.lstFiles.TabIndex = 7;
//
// btnDelete
//
this.btnDelete.Location = new System.Drawing.Point(336, 88);
this.btnDelete.Name = "btnDelete";
this.btnDelete.TabIndex = 8;
this.btnDelete.Text = "从列表删除";
this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(424, 198);
this.Controls.Add(this.btnDelete);
this.Controls.Add(this.lstFiles);
this.Controls.Add(this.stBar);
this.Controls.Add(this.btnUpLoad);
this.Controls.Add(this.btnSelect);
this.Controls.Add(this.txtURI);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnSelect_Click(object sender, System.EventArgs e)
{
if(openFile.ShowDialog()==DialogResult.Cancel)
{
return;
}
for(int i=0;i<openFile.FileNames.Length;i++)
{
if(!lstFiles.Items.Contains(openFile.FileNames[i]))
{
lstFiles.Items.Add(openFile.FileNames[i]);
}
}
}
private void btnDelete_Click(object sender, System.EventArgs e)
{
if(lstFiles.SelectedIndex==-1)
{
return;
}
lstFiles.Items.RemoveAt(lstFiles.SelectedIndex);
}
private void btnUpLoad_Click(object sender, System.EventArgs e)
{
Thread th=new Thread(new ThreadStart(StartUpLoad));
th.Start();
}
private void StartUpLoad()
{
string url=txtURI.Text;
string path=string.Empty;
int i=0;
btnUpLoad.Enabled=false;
try
{
stBar.Text="开始上传文件...";
for(int j=0;j<lstFiles.Items.Count;j++)
{
stBar.Text="开始上传文件"+lstFiles.Items[j].ToString();
client.UploadFile(url,"POST",lstFiles.Items[j].ToString());
i++;
stBar.Text=i.ToString()+"个文件上传";
}
stBar.Text="上传文件结束,总共上传"+i.ToString()+"个文件!";
}
catch(WebException ex)
{
MessageBox.Show(ex.Message,"Error");
stBar.Text="上传中断";
}
finally
{
btnUpLoad.Enabled=true;
}
}
}
}
</xmp>
本文地址:http://www.45fan.com/dnjc/69761.html