一:访问
访问时要带后缀例如:http://localhost:15343/updateAPK.ashx
二下载文件,例如作用更新apk的后台
- public class updateAPK : IHttpHandler
- {
- public void ProcessRequest(HttpContext context)
- {
- HttpResponse Response = context.Response;
- HttpRequest Request = context.Request;
- System.IO.Stream iStream = null;
- byte[] buffer = new Byte[10240];
- int length;
- long dataToRead;
- try
- {
- //获取虚拟目录的物理路径。
- string filepath = context.Server.MapPath("Content/Ship.apk");//待下载的文件路径
- iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
- System.IO.FileAccess.Read, System.IO.FileShare.Read);
- Response.Clear();
- dataToRead = iStream.Length;
- long p = 0;
- if (Request.Headers["Range"] != null)
- {
- Response.StatusCode = 206;
- p = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));
- }
- if (p != 0)
- {
- Response.AddHeader("Content-Range", "bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());
- }
- Response.AddHeader("Content-Length", ((long)(dataToRead - p)).ToString());
- Response.ContentType = "application/octet-stream";
- Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.GetEncoding(65001).GetBytes(System.IO.Path.GetFileName("Ship.apk"))));
- iStream.Position = p;
- dataToRead = dataToRead - p;
- while (dataToRead > 0)
- {
- if (Response.IsClientConnected)
- {
- length = iStream.Read(buffer, 0, 10240);
- Response.OutputStream.Write(buffer, 0, length);
- Response.Flush();
- buffer = new Byte[10240];
- dataToRead = dataToRead - length;
- }
- else
- {
- dataToRead = -1;
- }
- }
- }
- catch (Exception ex)
- {
- Response.Write("Error : " + ex.Message);
- }
- finally
- {
- if (iStream != null)
- {
- iStream.Close();
- }
- Response.End();
- }
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }