计算机充电网
 


  利用C#编写WebService进行多线程上传  
编辑:网络小飞  来源:愚翁网站  发表时间:2007-11-23  被查阅【】次<% Else %><% End If %>
Google

  在WebService的帮助下,进行多线程上传文件是非常简单。因此我只做个简单的例子,那么如果想要实现此功能的朋友,可以在我的基础上进行扩展。

  首先说说服务器端,只需要提供一个能允许多线程写文件的函数即可,具体代码如下。

[WebMethod]
public bool UploadFileData( string FileName, int StartPosition, byte[] bData )
{
 string strFullName = Server.MapPath( "Uploads" ) + @"\" + FileName;
 FileStream fs = null;
 try
 {
  fs = new FileStream( strFullName, FileMode.OpenOrCreate,
   FileAccess.Write, FileShare.Write );
 }
 catch( IOException err )
 {
  Session["ErrorMessage"] = err.Message;
  return false;
 }

 using( fs )
 {
  fs.Position = StartPosition;
  fs.Write( bData, 0, bData.Length );
 }
 return true;
}

  其中“Uploads”是在服务程序所在目录下的一个子目录,需要设置ASPNET用户对此目录具有可写权限。

  相对于服务器端来说,客户端要稍微复杂一些,因为要牵扯到多线程的问题。为了更好的传递参数,我用一个线程类来完成。具体如下。

 public delegate void UploadFileData( string FileName, int StartPos, byte[] bData );

 ///


 /// FileThread: a class for sub-thread
 ///

 sealed class FileThread
 {
  private int nStartPos;
  private int nTotalBytes;
  private string strFileName;
  public static UploadFileData UploadHandle;

  ///


  /// Constructor
  ///

  //

[1[2] [3] [4] [5] [6] [7] [8] [9] 

返回顶部】【 】【关闭窗口
  上篇文章:一个图片按钮类   下篇文章:ASP.NET架构下性能优化详解
计算机充电网 为您服务 关于本站 免责声明 法律法规 网址之家 便民查询 本站地图
 
Copyright © 72598.COM All Rights Reserved. 
E-mail:admin@72598.com QQ:360107618
粤ICP备06034384号