示例#1
0
        /// <summary>
        /// 保存文件信息到数据库
        /// </summary>
        /// <param name="parentId">父文件ID(如果保存缩略图的话,此id就是主图的id)</param>
        /// <param name="settingModel">设置信息</param>
        /// <param name="relativePath">相对路径</param>
        /// <returns>记录主键ID</returns>
        private long SaveFileInfoToDB(long parentId, XCLCMS.FileManager.Models.Uploader.FileSetting settingModel, string relativePath, int width, int height)
        {
            System.IO.FileInfo info  = new System.IO.FileInfo(Server.MapPath(relativePath));
            DateTime           dtNow = DateTime.Now;

            XCLCMS.Data.BLL.Attachment   bll   = new Data.BLL.Attachment();
            XCLCMS.Data.Model.Attachment model = new Data.Model.Attachment();
            model.AttachmentID   = XCLCMS.Data.BLL.Common.Common.GenerateID(Data.CommonHelper.EnumType.IDTypeEnum.ATT);
            model.FileName       = info.Name;
            model.CreaterID      = base.UserID;
            model.CreaterName    = base.CurrentUserModel.UserName;
            model.CreateTime     = dtNow;
            model.Description    = settingModel.Description;
            model.DownLoadCount  = settingModel.DownloadCount;
            model.Ext            = (info.Extension ?? "").Trim('.');
            model.FileSize       = (decimal)(info.Length / 1024);
            model.FormatType     = "";
            model.ImgHeight      = height;
            model.ImgWidth       = width;
            model.ParentID       = parentId;
            model.RecordState    = XCLCMS.Data.CommonHelper.EnumType.RecordStateEnum.N.ToString();
            model.Title          = settingModel.Title;
            model.OriginFileName = settingModel.Name;
            model.UpdaterID      = base.UserID;
            model.UpdaterName    = base.CurrentUserModel.UserName;
            model.UpdateTime     = dtNow;
            model.URL            = relativePath;
            model.ViewCount      = settingModel.ViewCount;
            model.ViewType       = settingModel.ViewType;
            model.FK_MerchantID  = base.CurrentUserModel.FK_MerchantID;
            return(bll.Add(model) ? model.AttachmentID : 0);
        }
示例#2
0
        /// <summary>
        /// 保存文件信息到数据库
        /// </summary>
        /// <param name="parentId">父文件ID(如果保存缩略图的话,此id就是主图的id)</param>
        /// <param name="settingModel">设置信息</param>
        /// <param name="relativePath">相对路径</param>
        /// <returns>记录主键ID</returns>
        private long SaveFileInfoToDB(long parentId, XCLCMS.FileManager.Models.Uploader.FileSetting settingModel, string relativePath, int width, int height)
        {
            var request = XCLCMS.Lib.WebAPI.Library.CreateRequest <XCLCMS.Data.Model.Attachment>(base.UserToken);

            request.Body = new Data.Model.Attachment();
            System.IO.FileInfo info  = new System.IO.FileInfo(Server.MapPath(relativePath));
            DateTime           dtNow = DateTime.Now;

            request.Body.AttachmentID = XCLCMS.Lib.WebAPI.Library.CommonAPI_GenerateID(base.UserToken, new Data.WebAPIEntity.RequestEntity.Common.GenerateIDEntity()
            {
                IDType = Data.CommonHelper.EnumType.IDTypeEnum.ATT.ToString()
            });
            request.Body.FileName       = info.Name;
            request.Body.CreaterID      = base.UserID;
            request.Body.CreaterName    = base.CurrentUserModel.UserName;
            request.Body.CreateTime     = dtNow;
            request.Body.Description    = settingModel.Description;
            request.Body.DownLoadCount  = settingModel.DownloadCount;
            request.Body.Ext            = (info.Extension ?? "").Trim('.');
            request.Body.FileSize       = (decimal)(info.Length / 1024);
            request.Body.FormatType     = "";
            request.Body.ImgHeight      = height;
            request.Body.ImgWidth       = width;
            request.Body.ParentID       = parentId;
            request.Body.RecordState    = XCLCMS.Data.CommonHelper.EnumType.RecordStateEnum.N.ToString();
            request.Body.Title          = settingModel.Title;
            request.Body.OriginFileName = settingModel.Name;
            request.Body.UpdaterID      = base.UserID;
            request.Body.UpdaterName    = base.CurrentUserModel.UserName;
            request.Body.UpdateTime     = dtNow;
            request.Body.URL            = relativePath;
            request.Body.ViewCount      = settingModel.ViewCount;
            request.Body.ViewType       = settingModel.ViewType;
            request.Body.FK_MerchantID  = base.CurrentUserModel.FK_MerchantID;
            var response = XCLCMS.Lib.WebAPI.AttachmentAPI.Add(request);

            return(response.IsSuccess ? request.Body.AttachmentID : 0);
        }
示例#3
0
        public JsonResult UploadSubmit(FormCollection fm)
        {
            XCLNetTools.Message.MessageModel msgModel = new XCLNetTools.Message.MessageModel();

            #region 基本信息

            HttpPostedFileBase file        = Request.Files["FileInfo"];
            DateTime           dtNow       = DateTime.Now;
            string             name        = System.Guid.NewGuid().ToString("N");
            string             ext         = XCLNetTools.FileHandler.ComFile.GetExtName(file.FileName);
            string             newFileName = string.Format("{0}.{1}", name, ext);
            //附件主目录
            string directoryPath = string.Format("{0}/{1}/{2}/", XCLCMS.FileManager.Common.Library.FileManager_UploadPath.TrimEnd('/'), dtNow.Year, dtNow.Month);
            //附件临时目录
            string directoryTempPath = string.Format("{0}/{1}/{2}/", XCLCMS.FileManager.Common.Library.FileManager_UploadPathTemp.TrimEnd('/'), dtNow.Year, dtNow.Month);

            //保存后的相对路径
            string relativePath = string.Empty;
            //原图保存后的物理地址
            string savedServerPath = string.Empty;
            //主文件id
            long mainFileID = 0;

            //生成目录
            XCLNetTools.FileHandler.FileDirectory.MakeDirectory(Server.MapPath(directoryPath));
            XCLNetTools.FileHandler.FileDirectory.MakeDirectory(Server.MapPath(directoryTempPath));

            #endregion 基本信息

            #region 文件参数

            string fileSetting = fm["FileSetting"] ?? "";
            XCLCMS.FileManager.Models.Uploader.FileSetting settingModel = null;
            if (!string.IsNullOrEmpty(fileSetting))
            {
                settingModel = XCLNetTools.Serialize.JSON.DeSerialize <XCLCMS.FileManager.Models.Uploader.FileSetting>(fileSetting);
            }

            if (null == settingModel)
            {
                msgModel.IsSuccess = false;
                msgModel.Message   = "参数设置无效!";
                return(Json(msgModel));
            }

            if (null != settingModel.ThumbImgSettings && settingModel.ThumbImgSettings.Count > 0)
            {
                settingModel.ThumbImgSettings = settingModel.ThumbImgSettings.Where(k => k.Width > 0 && k.Height > 0).Distinct().ToList();
            }

            #endregion 文件参数

            #region 裁剪主图或直接保存文件

            if (settingModel.IsNeedCrop)
            {
                //如果需要裁剪,则原图先保存到临时文件夹中
                savedServerPath = Server.MapPath(string.Format("{0}/{1}", directoryTempPath.TrimEnd('/'), newFileName));
                file.SaveAs(savedServerPath);

                using (var img = XCLNetTools.FileHandler.ImgLib.Crop(savedServerPath, settingModel.ImgCropWidth, settingModel.ImgCropHeight, settingModel.ImgX1, settingModel.ImgY1))
                {
                    if (null != img)
                    {
                        relativePath    = string.Format("{0}/{1}_{2}_{3}.{4}", directoryPath.TrimEnd('/'), name, settingModel.ImgCropWidth, settingModel.ImgCropHeight, ext);
                        savedServerPath = Server.MapPath(relativePath);
                        img.Save(savedServerPath);

                        mainFileID = this.SaveFileInfoToDB(0, settingModel, relativePath, settingModel.ImgCropWidth, settingModel.ImgCropHeight);
                    }
                }
            }
            else
            {
                //如果不裁剪,则直接保存原图
                relativePath    = string.Format("{0}/{1}", directoryPath.TrimEnd('/'), newFileName);
                savedServerPath = Server.MapPath(relativePath);
                file.SaveAs(savedServerPath);

                mainFileID = this.SaveFileInfoToDB(0, settingModel, relativePath, settingModel.ImgWidth, settingModel.ImgHeight);
            }

            if (mainFileID == 0)
            {
                msgModel.IsSuccess = false;
                msgModel.Message   = "主文件保存失败,请重新上传!";
                return(Json(msgModel));
            }

            #endregion 裁剪主图或直接保存文件

            #region 如果是图片,则根据主图的参数设置再生成缩略图

            if (null != settingModel.ThumbImgSettings && settingModel.ThumbImgSettings.Count > 0)
            {
                foreach (var thumb in settingModel.ThumbImgSettings)
                {
                    relativePath = string.Format("{0}/{1}_{2}_{3}.{4}", directoryPath.TrimEnd('/'), name, thumb.Width, thumb.Height, ext);
                    XCLNetTools.FileHandler.ImgLib.MakeThumbnail(savedServerPath, Server.MapPath(relativePath), thumb.Width, thumb.Height);
                    if (System.IO.File.Exists(Server.MapPath(relativePath)))
                    {
                        this.SaveFileInfoToDB(mainFileID, settingModel, relativePath, thumb.Width, thumb.Height);
                    }
                }
            }

            #endregion 如果是图片,则根据主图的参数设置再生成缩略图

            msgModel.IsSuccess = true;
            msgModel.Message   = "上传成功!";

            return(Json(msgModel));
        }