远程下载帮助类

来源:互联网 发布:mysql存储过程写法 编辑:程序博客网 时间:2024/05/16 23:44
//======================================================================////        Copyright (C) 2013 仙剑//        All rights reserved//        guid1:                    beaa7167-1dd4-423a-89b1-a824572332ea//        CLR Version:              4.0.30319.18063//        Name:                     DownloadHelper//        Computer:                 CHARLEY-PC//        Organization:             VoiceCyber//        Namespace:                VoiceCyber.Common//        File Name:                DownloadHelper////        created by Charley at 2014/3/22 17:55:05//        http://blog.csdn.net/jian200801 ////======================================================================using System;using System.IO;using System.Net;using System.Text;namespace VoiceCyber.Common{    /// <summary>    /// 文件下载帮助类,支持http和ftp下载     /// 这是一个静态类    /// </summary>    public static class DownloadHelper    {        /// <summary>        /// FTP方式下载文件        /// </summary>        /// <param name="parameters">        /// 下载参数        /// 0:服务器地址        /// 1:端口        /// 2:登录名(如果为空,则匿名下载)        /// 3:登录密码        /// 4:源文件路径        /// 5:存放路径        /// 6: 如果目标文件已经存在,是否替换文件(可选)        /// </param>        /// <returns></returns>        public static OperationReturn DownloadFileFTP(string[] parameters)        {            OperationReturn optReturn = new OperationReturn();            optReturn.Result = true;            optReturn.Code = Defines.RET_SUCCESS;            try            {                if (parameters == null || parameters.Length < 6)                {                    optReturn.Result = false;                    optReturn.Code = Defines.RET_PARAM_INVALID;                    optReturn.Message = string.Format("Download parameter is null or length invalid.");                    return optReturn;                }                string strTargetFile = parameters[5];                string strTargetDir = strTargetFile.Substring(0, strTargetFile.LastIndexOf("\\"));                if (!Directory.Exists(strTargetDir))                {                    Directory.CreateDirectory(strTargetFile);                }                if (File.Exists(strTargetFile))                {                    if (parameters.Length > 6 && parameters[6] == "1")                    {                        File.Delete(strTargetFile);                    }                    else                    {                        optReturn.Result = false;                        optReturn.Code = Defines.RET_FILE_ALREADY_EXIST;                        optReturn.Message = string.Format("Target file already exist.\t{0}", strTargetFile);                        return optReturn;                    }                }                string strRequest = string.Empty;                if (string.IsNullOrEmpty(parameters[2]))                {                    strRequest = string.Format("ftp://{0}:{1}/{2}", parameters[0], parameters[1], parameters[4]);                }                else                {                    strRequest = string.Format("ftp://{0}:{1}@{2}:{3}/{4}", parameters[2], parameters[3], parameters[0], parameters[1], parameters[4]);                }                FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(strRequest);                WebResponse ftpWebResponse = ftpWebRequest.GetResponse();                Stream stream = ftpWebResponse.GetResponseStream();                if (stream == null)                {                    optReturn.Result = false;                    optReturn.Code = Defines.RET_OBJECT_NULL;                    optReturn.Message = string.Format("Response stream is null");                    return optReturn;                }                using (FileStream fileStream = new FileStream(strTargetFile, FileMode.Create, FileAccess.Write))                {                    byte[] buffer = new byte[1024];                    int readed = stream.Read(buffer, 0, 1024);                    while (readed > 0)                    {                        fileStream.Write(buffer, 0, readed);                        readed = stream.Read(buffer, 0, 1024);                    }                    fileStream.Close();                    stream.Close();                }                optReturn.StringValue = strTargetFile;            }            catch (Exception ex)            {                optReturn.Result = false;                optReturn.Code = Defines.RET_FAIL;                optReturn.Message = ex.Message;                optReturn.Exception = ex;            }            return optReturn;        }        /// <summary>        /// HTTP方式下载文件        /// </summary>        /// <param name="parameters">        /// 下载参数        /// 0:服务器地址        /// 1:端口        /// 2:登录名(如果为空,则匿名下载)        /// 3:登录密码        /// 4:源文件路径        /// 5:存放路径        /// 6: 如果目标文件已经存在,是否替换文件(可选)        /// </param>        /// <returns></returns>        public static OperationReturn DownloadFileHTTP(string[] parameters)        {            OperationReturn optReturn = new OperationReturn();            optReturn.Result = true;            optReturn.Code = Defines.RET_SUCCESS;            try            {                if (parameters == null || parameters.Length < 6)                {                    optReturn.Result = false;                    optReturn.Code = Defines.RET_PARAM_INVALID;                    optReturn.Message = string.Format("Download parameter is null or length invalid.");                    return optReturn;                }                string strTargetFile = parameters[5];                string strTargetDir = strTargetFile.Substring(0, strTargetFile.LastIndexOf("\\"));                if (!Directory.Exists(strTargetDir))                {                    Directory.CreateDirectory(strTargetFile);                }                if (File.Exists(strTargetFile))                {                    if (parameters.Length > 6 && parameters[6] == "1")                    {                        File.Delete(strTargetFile);                    }                    else                    {                        optReturn.Result = false;                        optReturn.Code = Defines.RET_FILE_ALREADY_EXIST;                        optReturn.Message = string.Format("Target file already exist.\t{0}", strTargetFile);                        return optReturn;                    }                }                string strRequest = string.Format("http://{0}:{1}/{2}", parameters[0], parameters[1], parameters[4]);                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(strRequest);                if (!string.IsNullOrEmpty(parameters[2]))                {                    httpWebRequest.Credentials = new NetworkCredential(parameters[2], parameters[3]);                    string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", parameters[2], parameters[3])));                    httpWebRequest.Headers.Add("Authorization", "Basic" + code);                }                WebResponse httpWebResponse = httpWebRequest.GetResponse();                Stream stream = httpWebResponse.GetResponseStream();                if (stream == null)                {                    optReturn.Result = false;                    optReturn.Code = Defines.RET_OBJECT_NULL;                    optReturn.Message = string.Format("Response stream is null");                    return optReturn;                }                using (FileStream fileStream = new FileStream(strTargetFile, FileMode.Create, FileAccess.Write))                {                    byte[] buffer = new byte[1024];                    int readed = stream.Read(buffer, 0, 1024);                    while (readed > 0)                    {                        fileStream.Write(buffer, 0, readed);                        readed = stream.Read(buffer, 0, 1024);                    }                    fileStream.Close();                    stream.Close();                }                optReturn.StringValue = strTargetFile;            }            catch (Exception ex)            {                optReturn.Result = false;                optReturn.Code = Defines.RET_FAIL;                optReturn.Message = ex.Message;                optReturn.Exception = ex;            }            return optReturn;        }    }}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 b2驾驶证扣10分怎么办 刚发驾驶证照片太丑想换怎么办! 考驾照时户口变更怎么办 驾照年审色盲未过怎么办 考驾驶证互联网注册号码怎么办 驾驶证体检视力不过关怎么办 六年驾照满了怎么办 驾照扣了40多分怎么办 一个驾照扣24分怎么办 南昌电动车牌照丢了怎么办 上海餐饮工作人员怎么办健康证 房产过户没有遗嘱公证怎么办 在外地被扣12分怎么办 公务员体检视力不过关怎么办弱视 身份证被盗用注册公司怎么办 驾照分卖了12分怎么办 一年12分扣完了怎么办 滴滴车管所信息不同步怎么办 驾驶证过期两个月了怎么办 科目二考试第一次不合格怎么办 科目二不想考了怎么办 科二有事考不了怎么办 科四有事去不了怎么办 社保卡发了密码怎么办 不知道社保卡号怎么办 科目三未到30天怎么办 户口地址变了驾照怎么办 拿了驾照没开车怎么办 免检的车在外地怎么办 2018年b2证扣3分怎么办 科一考试没去怎么办 上海房子卖了户口怎么办 贷款买房买房人不是贷款人怎么办 行驶证驾驶证都遗失了怎么办 c1增驾b2没考过怎么办 没驾照买车怎么办行驶证 广州车辆年审加装踏板怎么办 租车感觉违章了 怎么办 武汉驾照扣12分怎么办 驾驶证照片泡水不清楚怎么办 驾驶证过了180天怎么办