WebService端:
[WebMethod]
public bool CreateFile(string fileName)
{
bool isCreate = true;
try
{
fileName = Path.Combine(Server.MapPath("File"), Path.GetFileName(fileName));
/*
首先设置上传服务器文件的路径
然后发布web服务 发布的时候要自己建一个自己知道的文件夹
"C:\NMGIS_Video" "C:\NMGIS_Video" fileName = Path.Combine(Server.MapPath("") + @"\Video" + Path.GetFileName(fileName));
*/
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Close();
}
catch
{
isCreate = false;
}
return isCreate;
}
[WebMethod]
public bool Append(string fileName, byte[] buffer)
{
bool isAppend = true;
try
{
fileName = Path.Combine(Server.MapPath("File"), Path.GetFileName(fileName));
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
fs.Seek(0, SeekOrigin.End);
fs.Write(buffer, 0, buffer.Length);
fs.Close();
}
catch
{
isAppend = false;
}
return isAppend;
}
客戶端:
private void btnfile_Click(object sender, EventArgs e)
{
string file = "";
string filename = "";
WebServiceDemoSoapClient MyWebService2 = new WebServiceDemoSoapClient();
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//该值确定是否可以选择多个文件
dialog.Title = "请选择文件夹";
dialog.Filter = "所有文件(*.*)|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
file = dialog.FileName;
filename = Path.GetFileName(dialog.FileName);
fileaddress.Text = file;
}
MyWebService2.CreateFile(filename);
//要上传文件的路径
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
int size = (int)fs.Length;
int bufferSize = 1024 * 512;
int count = (int)Math.Ceiling((double)size / (double)bufferSize);
for (int i = 0; i < count; i++)
{
int readSize = bufferSize;
if (i == count - 1)
readSize = size - bufferSize * i;
byte[] buffer = new byte[readSize];
fs.Read(buffer, 0, readSize);
MyWebService2.Append(filename, buffer);
}
}