static void Main(string[] args) { /*speechRecognizer.SpeechRecognized += process; * * GrammarBuilder grammarBuilder = new GrammarBuilder(); * Choices commandChoices = new Choices("weight", "color", "size"); * grammarBuilder.Append(commandChoices); * * Choices valueChoices = new Choices(); * valueChoices.Add("normal", "bold"); * valueChoices.Add("red", "green", "blue"); * valueChoices.Add("small", "medium", "large"); * grammarBuilder.Append(valueChoices); * * speechRecognizer.LoadGrammar(new Grammar(grammarBuilder)); * speechRecognizer.SetInputToDefaultAudioDevice();*/ //request drive letter Console.WriteLine("Input Main Drive Letter"); string input = Console.ReadLine(); while (input.Length > 1 || input.Length < 1) { Console.WriteLine("Invalid drive letter! Please use single letter (ex. \'C\')"); Console.WriteLine("Input Main Drive Letter"); input = Console.ReadLine(); } sf = new SystemFiles(input); Console.Clear(); while (true) { Run(); } }
protected string GetFilePath(SystemFiles file) { var filePath = string.Empty; if (file.FileCompressStatus == Model.EnumFileCompressStatus.Compressed) { // 如果文件已经被归档,需要先将文件解压到初始根目录 DepressFile(new List <int>() { file.Id }); } // 在初始上传根目录上寻找文件 filePath = Path.Combine(AppConfig.FileUploadRootDirectory, file.FilePath); if (File.Exists(filePath)) { return(filePath); } // 在图片压缩目录中寻找文件 filePath = Path.Combine(AppConfig.FileCompressRootDirectory, file.FilePath); if (File.Exists(filePath)) { return(filePath); } throw new Exception($"{file.FileLongName}在服务器上找不到"); }
public FileResult GetZipFileToken(List <FileToken> fileTokeList) { var Result = new FileResult(); var systemFiles = new SystemFiles(); try { if (fileTokeList == null || !fileTokeList.Any()) { throw new Exception("参数集合为空"); } var token = this.GenerateToken(fileTokeList[0]); cacheManager.Set(token, string.Join(",", fileTokeList.Select(s => s.FileId))); var tokenObj = new FileToken() { Url = $"{AppConfig.FileCenterDomain}/file/GetZipFile?token={HttpUtility.UrlEncode(token)}" }; Result.Status = "1"; Result.Message = "SUCCESS"; Result.Result = JsonConvert.SerializeObject(tokenObj); return(Result); } catch (Exception er) { Result.Status = "0"; Result.Message = er.Message; return(Result); } }
public IHttpActionResult GetFile(string id) { HttpResponseMessage httpResponseMessage = null; try { SystemFiles systemFiles = null; if (string.IsNullOrEmpty(id)) { throw new Exception("参数不正确!"); } var fileId = id; int Id = 0; if (int.TryParse(fileId, out Id)) { // 传入的id是int类型,说明是Id字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.Id == Id); } else { // 传入的id不是int类型,说明是FileId字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.FileId == new Guid(fileId)); } var filePath = this.GetFilePath(systemFiles); LogHelper.Info($"FileName:{systemFiles.FileName}"); var browser = String.Empty; if (HttpContext.Current.Request.UserAgent != null) { browser = HttpContext.Current.Request.UserAgent.ToUpper(); } var fileName = browser.Contains("FIREFOX") ? HttpUtility.UrlEncode(systemFiles.FileName, Encoding.UTF8) : HttpUtility.UrlEncode(Path.GetFileName(systemFiles.FileName), Encoding.UTF8); httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK); FileStream fileStream = File.OpenRead(filePath); httpResponseMessage.Content = new StreamContent(fileStream); httpResponseMessage.Content.Headers.Add("FileName", fileName); httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; return(ResponseMessage(httpResponseMessage)); } catch (Exception ex) { httpResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError); httpResponseMessage.Content = new StringContent(ex.Message); return(ResponseMessage(httpResponseMessage)); } }
public IHttpActionResult DownloadBigFile(PartialFileModel partialFileModel) { HttpResponseMessage httpResponseMessage = null; try { SystemFiles systemFiles = null; if (partialFileModel.Id != 0) { // 传入的id是int类型,说明是Id字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.Id == partialFileModel.Id); } else if (partialFileModel.FileId.HasValue && partialFileModel.FileId != Guid.Empty) { // 传入的id不是int类型,说明是FileId字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.FileId == partialFileModel.FileId); } else { throw new Exception("传入文件Id无效"); } var filePath = this.GetFilePath(systemFiles); LogHelper.Info($"FileName:{systemFiles.FileName}"); var browser = String.Empty; if (HttpContext.Current.Request.UserAgent != null) { browser = HttpContext.Current.Request.UserAgent.ToUpper(); } httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK); FileStream fileStream = File.OpenRead(filePath); httpResponseMessage.Content = new StreamContent(fileStream); httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = browser.Contains("FIREFOX") ? systemFiles.FileName : HttpUtility.UrlEncode(Path.GetFileName(systemFiles.FileName)) }; return(ResponseMessage(httpResponseMessage)); } catch (Exception ex) { httpResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError); httpResponseMessage.Content = new StringContent(ex.Message); return(ResponseMessage(httpResponseMessage)); } }
public FileResult GetFileTokenList(List <FileToken> fileTokeList) { var Result = new FileResult(); var systemFiles = new SystemFiles(); try { if (fileTokeList == null || !fileTokeList.Any()) { throw new Exception("参数集合为空"); } using (FileCenterDbContext dbContext = new FileCenterDbContext()) { foreach (var item in fileTokeList) { // 解密获取真正的FileId item.FileId = rsaManager.RSADecrypt(File.ReadAllText(AppConfig.PrivateKeyFilePath), item.FileId); item.Token = this.GenerateToken(item); item.Url = $"{AppConfig.FileCenterDomain}/file/GetFile?token={HttpUtility.UrlEncode(item.Token)}"; int Id = 0; if (int.TryParse(item.FileId, out Id)) { // 传入的id是int类型,说明是Id字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.Id == Id); } else { // 传入的id不是int类型,说明是FileId字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.FileId == new Guid(item.FileId)); } item.FileName = systemFiles.FileName; cacheManager.Set(item.Token, item.FileId); } Result.Status = "1"; Result.Message = "SUCCESS"; Result.Result = JsonConvert.SerializeObject(fileTokeList); return(Result); } } catch (Exception er) { Result.Status = "0"; Result.Message = er.Message; return(Result); } }
public override bool EnsureEnvironment(out IEnumerable <string> errors) { // Test creating/saving/deleting a file in the same location as the content xml file // NOTE: We cannot modify the xml file directly because a background thread is responsible for // that and we might get lock issues. try { XmlStore.EnsureFilePermission(); errors = Enumerable.Empty <string>(); return(true); } catch { errors = new[] { SystemFiles.GetContentCacheXml(_globalSettings) }; return(false); } }
protected string GetFilePath(SystemFiles file) { var filePath = string.Empty; // 在初始上传根目录上寻找文件 filePath = Path.Combine(AppConfig.FileUploadRootDirectory, file.FilePath); if (File.Exists(filePath)) { return(filePath); } // 在图片压缩目录中寻找文件 filePath = Path.Combine(AppConfig.FileCompressRootDirectory, file.FilePath); if (File.Exists(filePath)) { return(filePath); } throw new Exception($"{file.FileLongName}在服务器上找不到"); }
/// <summary> /// 合并文件 /// </summary> private void Merge(PartialFileModel partialFileModel) { var mergeFileBytes = new List <byte>(); var partialFileList = new List <FileInfo>(); // 取得分片文件内容,拼接成初始文件 for (int i = 0; i < partialFileModel.PartialCount; i++) { var file = new FileInfo($"{AppConfig.BigFileTempStorage}\\{partialFileModel.FileId}_{i}"); using (var tf = file.OpenRead()) { var blockBytes = new byte[tf.Length]; tf.Read(blockBytes, 0, blockBytes.Length); mergeFileBytes.AddRange(blockBytes); } partialFileList.Add(file); } // 保存初始上传大文件 SystemFiles systemFiles = new SystemFiles(); var FolderName = ConfigurationManager.AppSettings[partialFileModel.ProjectName]; if (FolderName == null) { FolderName = partialFileModel.ProjectName; } string day = DateTime.Now.ToString("yyyyMMdd"); string folder = FolderName + "/" + day; string filePath = $"{AppConfig.FileUploadRootDirectory}/{folder}"; if (Directory.Exists(filePath) == false)// 如果不存在就创建file文件夹 { Directory.CreateDirectory(filePath); } string longName = Guid.NewGuid().ToString(); string SaveFileName = longName + partialFileModel.FileExtension; // 保存文件名称 using (FileStream fs = File.Create(filePath + "/" + SaveFileName)) { fs.Write(mergeFileBytes.ToArray(), 0, mergeFileBytes.Count); } systemFiles = new SystemFiles() { FileId = partialFileModel.FileId, FileData = null, FilePath = folder + "/" + SaveFileName, FileExtension = partialFileModel.FileExtension, FileName = partialFileModel.FileName, FileLongName = SaveFileName, FileSize = mergeFileBytes.Count, ProjectName = partialFileModel.ProjectName, CreateDate = DateTime.Now, FileCompressStatus = EnumFileCompressStatus.Uncompressed, TobeArchiveDateTime = DateTime.Now.AddDays((int)EnumArchivePeriod.Quarter) }; dbContext.SystemFiles.Add(systemFiles); dbContext.SaveChanges(); partialFileModel.Id = systemFiles.Id; // 删除上传的分片小文件 foreach (var file in partialFileList) { if (file.Exists) { file.Delete(); } } }
public IHttpActionResult UploadFile([FromUri] SystemFilesView model) { var result = new FileResult(); try { SystemFiles systemFiles = new SystemFiles(); var FolderName = ConfigurationManager.AppSettings[model.ProjectName]; if (FolderName == null) { FolderName = model.ProjectName; } var day = DateTime.Now.ToString("yyyyMMdd"); var folder = FolderName + "/" + day; var filePath = AppConfig.FileUploadRootDirectory + "/" + folder; var dataLength = 0L; if (Directory.Exists(filePath) == false)// 如果不存在就创建file文件夹 { Directory.CreateDirectory(filePath); } string longName = Guid.NewGuid().ToString(); string SaveFileName = longName + model.FileExtension; // 保存文件名称 using (var destinationStream = File.Create(filePath + "/" + SaveFileName)) using (var sourceStream = Request.Content.ReadAsStreamAsync().Result) { // TODO:添加一个BufferStream缓冲,减少I/O压力 sourceStream.CopyTo(destinationStream); dataLength = sourceStream.Length; } var tobeArchiveDateTime = (model.ArchivePeriod == EnumArchivePeriod.Never || IsImage(model)) ? DateTime.MaxValue : DateTime.Now.AddDays((int)model.ArchivePeriod); systemFiles = new SystemFiles() { FileId = Guid.NewGuid(), FileData = null, FilePath = folder + "/" + SaveFileName, FileExtension = model.FileExtension, FileName = model.FileName, FileLongName = SaveFileName, FileSize = (int)dataLength, ProjectName = model.ProjectName, CreateDate = DateTime.Now, FileCompressStatus = EnumFileCompressStatus.Uncompressed, TobeArchiveDateTime = tobeArchiveDateTime }; using (FileCenterDbContext dbContext = new FileCenterDbContext()) { dbContext.SystemFiles.Add(systemFiles); dbContext.SaveChanges(); } result.Status = AppConfig.ReturnResult.Status_Success; result.Message = AppConfig.ReturnResult.Message_Success; result.Result = JsonConvert.SerializeObject(systemFiles); return(Json(result)); } catch (Exception ex) { result.Status = AppConfig.ReturnResult.Status_Failure; result.Message = ex.Message; return(Json(result)); } }
public IHttpActionResult GetFile(string token, string type = "") { HttpResponseMessage httpResponseMessage = null; try { SystemFiles systemFiles = null; //根据token获取存储的fileId var fileId = this.cacheManager.Get <string>(token); if (string.IsNullOrEmpty(fileId)) { throw new Exception("Token已无效,请进入业务系统下载文件。"); } int Id = 0; if (int.TryParse(fileId, out Id)) { // 传入的id是int类型,说明是Id字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.Id == Id); } else { // 传入的id不是int类型,说明是FileId字段 systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.FileId == new Guid(fileId)); } var filePath = this.GetFilePath(systemFiles); LogHelper.Info($"FileName:{HttpUtility.UrlEncode(systemFiles.FileName, Encoding.UTF8)}"); var browser = String.Empty; if (HttpContext.Current.Request.UserAgent != null) { browser = HttpContext.Current.Request.UserAgent.ToUpper(); } var fileName = browser.Contains("FIREFOX") ? HttpUtility.UrlEncode(systemFiles.FileName, Encoding.UTF8) : HttpUtility.UrlEncode(Path.GetFileName(systemFiles.FileName), Encoding.UTF8); httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK); FileStream fileStream = File.OpenRead(filePath); httpResponseMessage.Content = new StreamContent(fileStream); httpResponseMessage.Content.Headers.Add("FileName", fileName); httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = fileName }; // 是否只允许下载一次 if (AppConfig.AllowDownloadOnce) { // 移除token this.cacheManager.Remove(token); } return(ResponseMessage(httpResponseMessage)); } catch (Exception ex) { httpResponseMessage = new HttpResponseMessage(HttpStatusCode.InternalServerError); httpResponseMessage.Content = new StringContent(ex.Message); return(ResponseMessage(httpResponseMessage)); } }