Esempio n. 1
0
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <returns></returns>
        public string Opt_DownloadFile()
        {
            if (!IsAdmin)
            {
                return("没有权限");
            }
            string BackupName = Request["BackupName"];

            var backupItem = SMOHelper.GetBackups().First(item => item.IsDeleted == false && item.BackupName == BackupName);

            if (backupItem == null || !File.Exists(backupItem.BackupFullPath))
            {
                return("参数异常");
            }

            using (FileStream fs = new FileStream(backupItem.BackupFullPath, FileMode.Open))
            {
                const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
                byte[]     buffer    = new byte[ChunkSize];

                long dataLengthToRead = fs.Length;//获取下载的文件总大小
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(BackupName + ".bak"));
                while (dataLengthToRead > 0 && Response.IsClientConnected)
                {
                    int lengthRead = fs.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                    Response.OutputStream.Write(buffer, 0, lengthRead);
                    Response.Flush();
                    dataLengthToRead = dataLengthToRead - lengthRead;
                }
            }
            return("");
        }
Esempio n. 2
0
        public string Opt_GetList()
        {
            var backups = SMOHelper.GetBackups();

            totalCount = backups.Count();
            int idx  = 0;
            var list = backups.Skip((PageIndex - 1) * PageSize).Take(PageSize).Select(item => new
            {
                ID         = ++idx,
                BackupName = item.BackupName,
                BackupTime = item.BackupTime.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                Size       = item.GetSizeStr(),
                Remark     = item.Remark
            });

            return(JavaScriptConvert.SerializeObject(new { PageData = list.ToList(), TotalPage = TotalPage() }));
        }
Esempio n. 3
0
 protected override void SetPowerZone()
 {
     BackupItems = SMOHelper.GetBackups();
 }