public IApiResultModel DoConvert([FromBody] ConvertDto dto) { if (string.IsNullOrWhiteSpace(dto.SolutionName)) { return(ApiResultModel.FromError("解决方案名称不能为空!")); } if (!convertService.IsProjectPreValid(dto.SolutionName)) { return(ApiResultModel.FromError("解决方案名称不合法,请更换!")); } if (dto.SolutionName.StartsWith("xLiAd.")) { return(ApiResultModel.FromError("解决方案名称不能以 xLiAd. 开头,请更换!")); } OptionsSelect optionsSelect = new OptionsSelect() { Items = dto.Items }; try { var fileItems = convertService.Convert(dto.SolutionName, optionsSelect); using (MemoryStream zipToOpen = new MemoryStream()) { using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create)) { foreach (var item in fileItems) { var en = archive.CreateEntry(item.FileFullName.TrimStart('/')); using (var stream = en.Open()) stream.Write(item.Content, 0, item.Content.Length); } } if (!Directory.Exists(configModel.ZipSavePath)) { Directory.CreateDirectory(configModel.ZipSavePath); } var fileName = $"{dto.SolutionName}.{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.zip"; var fullName = Path.Combine(configModel.ZipSavePath, fileName); var bs = zipToOpen.ToArray(); using (var fs = new FileStream(fullName, FileMode.Create)) fs.Write(bs, 0, bs.Length); return(ApiResultModel.FromData(fileName)); } } catch (Exception ex) { return(ApiResultModel.FromError(ex.Message)); } }
private void BtnBorn_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(TbSolutionName.Text)) { MessageBox.Show("解决方案名称不能为空!"); return; } if (string.IsNullOrWhiteSpace(TbTargetFolder.Text)) { MessageBox.Show("代码放置位置不能为空!"); return; } if (!convertService.IsProjectPreValid(TbSolutionName.Text)) { MessageBox.Show("解决方案名称不合法,请更换!"); return; } if (TbSolutionName.Text.StartsWith("xLiAd.")) { MessageBox.Show("解决方案名称不能以 xLiAd. 开头,请更换!"); return; } if (!System.IO.Directory.Exists(TbTargetFolder.Text)) { MessageBox.Show("代码放置位置不存在,请更换!"); return; } string ActureSaveFolder; if (CbInSubFolder.Checked) { ActureSaveFolder = System.IO.Path.Combine(TbTargetFolder.Text, TbSolutionName.Text); } else { ActureSaveFolder = TbTargetFolder.Text; } if (System.IO.Directory.Exists(ActureSaveFolder)) { var dict = new System.IO.DirectoryInfo(ActureSaveFolder); if (dict.GetDirectories().Any() || dict.GetFiles().Any()) { MessageBox.Show("代码放置位置非空,请更换!"); return; } } else { System.IO.Directory.CreateDirectory(ActureSaveFolder); } OptionsSelect optionsSelect = new OptionsSelect() { Items = new OptionsSelectItem[] { new OptionsSelectItem() { OptionCode = "SqlType", SelectOrInput = RbSqlServer.Checked ? "SqlServer" : "MySql" }, new OptionsSelectItem() { OptionCode = "SqlConn", SelectOrInput = TbConn.Text } } }; var fileItems = convertService.Convert(TbSolutionName.Text, optionsSelect); foreach (var item in fileItems) { var fullName = System.IO.Path.Combine(ActureSaveFolder, item.FileFullName.TrimStart('/')); var fd = Path.GetDirectoryName(fullName); if (!Directory.Exists(fd)) { Directory.CreateDirectory(fd); } using (FileStream fs = new FileStream(fullName, FileMode.Create)) fs.Write(item.Content, 0, item.Content.Length); } MessageBox.Show("生成成功!"); }