public ActionResult Add(string version) { if (string.IsNullOrEmpty(version)) { ViewBag.Title = "版本添加"; } else { ViewBag.Title = "版本编辑"; } var fileVersions = VersionService.GetLastestVersion(); var cVersion = fileVersions.Versions.FirstOrDefault(m => m.VersionName == version); if (cVersion == null) { cVersion = new UpgradeFileInfo(); } return View(cVersion); }
public ActionResult Add(AddVersionModel versionModel) { try { var fileVersions = VersionService.GetLastestVersion(); var cVersion = new UpgradeFileInfo(); cVersion.VersionName = versionModel.VersionName; cVersion.LastUpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); cVersion.Description = versionModel.Description; cVersion.IsFirstVersion = fileVersions.Versions.Count == 0; var lastestVersion = fileVersions.Versions.SingleOrDefault(m => m.IsLastVersion); if (fileVersions.Versions.Count == 0 || versionModel.IsLastVersion == "true") { if (lastestVersion != null) lastestVersion.IsLastVersion = false; cVersion.IsLastVersion = true; } else { cVersion.IsLastVersion = false; } //处理文件 //要删除的 cVersion.FileToDelete = versionModel.FileToDelete == null ? null : versionModel.FileToDelete.ToList(); //文件保存路径 string pathForEntry = Server.MapPath(FILEENTRYPATH + "/" + versionModel.VersionName); cVersion.FilesToUpgrade = new List<string>(); cVersion.FilesSize = 0.0; //要更新的 foreach (var fileName in versionModel.FilesToUpgrade) { var fileInfo = new FileInfo(fileName); bool isShouldIngnore = !fileInfo.Exists; if (fileVersions.FileExtensionToIgnore.Where(m => m.ToUpper() == fileInfo.Extension.ToUpper()).Count() > 0) { isShouldIngnore = true; } if (fileVersions.FilesToIgnore.Where(m => m.ToUpper() == fileInfo.Name.ToUpper()).Count() > 0) { isShouldIngnore = true; } if (!isShouldIngnore) { //文件相对路径 string fileRelativeName = fileName.Remove(0, pathForEntry.Length + 1); cVersion.FilesToUpgrade.Add(fileRelativeName); var fileStream = fileInfo.OpenRead(); cVersion.FilesSize += fileStream.Length / 1024; fileStream.Close(); } } //递归删除版本目录下不需要更新的文件 var fileNamesShouldKeep = cVersion.FilesToUpgrade.Select(m => Path.Combine(pathForEntry, m)); LoopDeleteFile(pathForEntry, fileNamesShouldKeep.ToList()); fileVersions.Versions.Add(cVersion); VersionService.SaveVersionInfo(fileVersions); return Json(new { IsSuccess = true }); } catch (Exception ex) { return Json(new { IsSuccess = false, Message = ex.Message }); } }