示例#1
0
        public FileResult DownloadSingleFileById(string FileId, bool IsConvertStream = false)
        {
            FileResult Result = new FileResult();

            try
            {
                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    SystemFiles systemFiles = null;
                    int         Id          = 0;
                    int.TryParse(FileId, out Id);
                    systemFiles = dbContext.SystemFiles.FirstOrDefault(s => s.Id == Id);

                    var filePath = this.GetFilePath(systemFiles);

                    if (IsConvertStream)
                    {
                        systemFiles.FileData = File.ReadAllBytes(filePath);
                    }

                    Result.Status  = "1";
                    Result.Message = "SUCCESS";
                    Result.Result  = Newtonsoft.Json.JsonConvert.SerializeObject(systemFiles);
                    return(Result);
                }
            }
            catch (Exception er)
            {
                Result.Status  = "0";
                Result.Message = er.Message;
                Result.Result  = null;
                return(Result);
            }
        }
示例#2
0
        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="FileId"></param>
        /// <returns></returns>
        public FileResult DeleteFile(string FileId)
        {
            FileResult Result = new FileResult();

            try
            {
                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    SystemFiles systemFiles = null;
                    int         Id          = 0;
                    int.TryParse(FileId, out Id);
                    systemFiles = dbContext.SystemFiles.Find(Id);

                    if (systemFiles != null)
                    {
                        systemFiles.IsDelete = 1;
                    }

                    Result.Status  = "1";
                    Result.Message = "SUCCESS";
                    Result.Result  = Newtonsoft.Json.JsonConvert.SerializeObject(systemFiles);
                    return(Result);
                }
            }
            catch (Exception er)
            {
                Result.Status  = "0";
                Result.Message = er.Message;
                Result.Result  = null;
                return(Result);
            }
        }
示例#3
0
        private string GetFilePath(SystemFiles file)
        {
            var filePath = string.Empty;

            if (file.FileCompressStatus == Model.EnumFileCompressStatus.Compressed)
            {
                // 如果文件已经被归档,需要先将文件解压到初始根目录

                DepressFile(new List <int>()
                {
                    file.Id
                });
            }

            // 1.在存放上传文件目录中找
            filePath = Path.Combine(AppConfig.FileUploadRootDirectory, file.FilePath);

            if (File.Exists(filePath))
            {
                return(filePath);
            }

            // 2.在存放图片处理的目录中找
            filePath = Path.Combine(AppConfig.FileCompressRootDirectory, file.FilePath);

            if (File.Exists(filePath))
            {
                return(filePath);
            }

            throw new Exception($"{file.FileLongName}在服务器上找不到");
        }
示例#4
0
        public FileResult GetFileTokenList(string jsonParameter)
        {
            LogHelper.Info($"GetFileTokenList Start At:{DateTime.Now}");
            var Result        = new FileResult();
            var fileTokenList = new List <FileToken>();
            var systemFiles   = new SystemFiles();

            try
            {
                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    var passedParamList = Newtonsoft.Json.JsonConvert.DeserializeObject <List <FileToken> >(jsonParameter);

                    foreach (var item in passedParamList)
                    {
                        // 解密获取真正的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  = Newtonsoft.Json.JsonConvert.SerializeObject(passedParamList);
                    return(Result);
                }
            }
            catch (Exception er)
            {
                Result.Status  = "0";
                Result.Message = er.Message;
                return(Result);
            }
            finally
            {
                LogHelper.Info($"GetFileTokenList End At:{DateTime.Now}");
            }
        }
示例#5
0
        public FileResult UploadFileSwitch(byte[] FileData, string FileName, string FileExtension, string ProjectNo, string SaveType, int IsPdf)
        {
            if (!string.IsNullOrEmpty(FileExtension))
            {
                FileExtension = Path.GetExtension(FileName);
            }

            var Result = UpLoadFile(FileData, FileName, FileExtension, ProjectNo, SaveType);

            if (IsPdf == 0) // 图片不需要再转成pdf文件
            {
                return(Result);
            }
            else
            {
                #region 转成PDF文件
                var    file     = Newtonsoft.Json.JsonConvert.DeserializeObject <SystemFiles>(Result.Result);
                string savePath = file.FilePath;
                string fileName = file.FileName;
                var    pdfPath  = AttachmentFile2PDF(ref savePath, ref fileName, Path.Combine(AppConfig.FileUploadRootDirectory, savePath));

                var systemFiles = new SystemFiles()
                {
                    FileId        = Guid.NewGuid(),
                    FileData      = null,
                    FilePath      = pdfPath,
                    FileExtension = ".pdf",
                    FileName      = FileName + ".pdf",
                    FileLongName  = pdfPath,
                    FileSize      = FileData.Length,
                    ProjectName   = ProjectNo,
                    CreateDate    = DateTime.Now
                };

                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    dbContext.SystemFiles.Add(systemFiles);
                    dbContext.SaveChanges();
                }

                file.PdfFileId = systemFiles.FileId;

                var result1 = new FileResult();
                result1.Status  = "1";
                result1.Message = "SUCCESS";
                result1.Result  = Newtonsoft.Json.JsonConvert.SerializeObject(file);
                return(result1);

                #endregion
            }
        }
示例#6
0
        public FileResult DownloadSingleFileByFileId(string FileId)
        {
            FileResult Result = new FileResult();

            try
            {
                //_dbContext.SystemFiles.FirstOrDefault(s => s.FileId.ToString() == FileId);

                // 改用SQL查询,提升查询效率
                var         executeSql  = $@"
SELECT Id,
       FileName,
       FileLongName,
       FileExtension,
       FileSize,
       FilePath,
       ProjectName,
       FileId
FROM dbo.SystemFiles
WHERE FileId = '{FileId}'
";
                SystemFiles systemFiles = null;

                using (var conn = new SqlConnection(AppConfig.FileDbConnectionString))
                {
                    if (conn.State == System.Data.ConnectionState.Closed)
                    {
                        conn.Open();
                    }

                    systemFiles = conn.Query <SystemFiles>(executeSql).FirstOrDefault();
                    var filePath = this.GetFilePath(systemFiles);
                    systemFiles.FileData = File.ReadAllBytes(filePath);
                }

                Result.Status  = "1";
                Result.Message = "SUCCESS";
                Result.Result  = Newtonsoft.Json.JsonConvert.SerializeObject(systemFiles);
                return(Result);
            }
            catch (Exception er)
            {
                Result.Status  = "0";
                Result.Message = er.Message;
                Result.Result  = null;
                return(Result);
            }
        }
示例#7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="projectNo"></param>
        /// <param name="localImagePath"></param>
        /// <param name="thumbnailImagePath"></param>
        /// <returns></returns>
        private SystemFiles GetThumbnail(string projectNo, string folder, string localImagePath, string thumbnailImagePath)
        {
            try
            {
                var systemFiles = new SystemFiles();
                var OldPath     = this.GetFilePath(new SystemFiles()
                {
                    FilePath = folder + "/" + localImagePath
                });                                                                                           //Server.MapPath(folder) + "/" + localImagePath;
                var covertPath = Path.Combine(AppConfig.FileUploadRootDirectory, folder, thumbnailImagePath); // Server.MapPath(folder) + "/" + thumbnailImagePath;
                var success    = GetThumbnail(OldPath, covertPath, 180, 140);

                if (success)
                {
                    var path = folder + "/" + thumbnailImagePath;

                    systemFiles = new SystemFiles()
                    {
                        FileId        = Guid.NewGuid(),
                        FileData      = null,
                        FilePath      = path,
                        FileExtension = Path.GetExtension(path),
                        FileName      = Path.GetFileName(path),
                        FileLongName  = Path.GetFileName(path),
                        FileSize      = 0,
                        ProjectName   = projectNo,
                        CreateDate    = DateTime.Now
                    };

                    using (FileCenterDbContext dbContext = new FileCenterDbContext())
                    {
                        dbContext.SystemFiles.Add(systemFiles);
                        dbContext.SaveChanges();
                    }
                }

                return(systemFiles);
            }
            catch (Exception ex)
            {
                return(new SystemFiles());
            }
        }
示例#8
0
        public FileResult UploadFile(byte[] FileData, string FileName, string FileExtension, string ProjectNo, string SaveType)
        {
            var Result = new FileResult();

            try
            {
                SystemFiles systemFiles = new SystemFiles();

                var FolderName = ConfigurationManager.AppSettings[ProjectNo];

                if (FolderName == null)
                {
                    FolderName = ProjectNo;
                }

                string day      = DateTime.Now.ToString("yyyyMMdd");
                string folder   = FolderName + "/" + day;
                string filePath = Server.MapPath(folder);

                if (Directory.Exists(filePath) == false)// 如果不存在就创建file文件夹
                {
                    Directory.CreateDirectory(filePath);
                }
                string longName     = Guid.NewGuid().ToString();
                string SaveFileName = longName + FileExtension; // 保存文件名称

                using (FileStream fs = File.Create(filePath + "/" + SaveFileName))
                {
                    fs.Write(FileData, 0, FileData.Length);
                }

                string smallPicPath = longName + "_100.100" + FileExtension;

                systemFiles = new SystemFiles()
                {
                    FileId             = Guid.NewGuid(),
                    FileData           = null,
                    FilePath           = folder + "/" + SaveFileName,
                    FileExtension      = FileExtension,
                    FileName           = FileName,
                    FileLongName       = SaveFileName,
                    FileSize           = FileData.Length,
                    ProjectName        = ProjectNo,
                    CreateDate         = DateTime.Now,
                    FileCompressStatus = EnumFileCompressStatus.Uncompressed
                };

                if (AppConfig.ImageExtension.Contains(FileExtension.ToLower())) // 如果是图片,自动增加缩略图转换
                {
                    var coverName = Guid.NewGuid().ToString() + FileExtension;  // 保存文件名称;
                    var cover     = GetThumbnail(ProjectNo, folder, SaveFileName, coverName);
                    if (cover.FileId.HasValue)
                    {
                        systemFiles.CoverSavePath = cover.FilePath;
                        systemFiles.CoverFileId   = cover.FileId;
                    }
                }

                using (FileCenterDbContext dbContext = new FileCenterDbContext())
                {
                    dbContext.SystemFiles.Add(systemFiles);
                    dbContext.SaveChanges();
                }

                //systemFiles.FileData = FileData;// 将二进制流返回

                Result.Status  = "1";
                Result.Message = "SUCCESS";
                Result.Result  = Newtonsoft.Json.JsonConvert.SerializeObject(systemFiles);

                return(Result);
            }
            catch (Exception er)
            {
                Result.Status  = "0";
                Result.Message = er.Message;
                return(Result);
            }
        }