/// <summary>
        /// 解析上传路径规则。
        /// </summary>
        /// <param name="uploadPathRule">上传路径规则。</param>
        /// <param name="file">PowerHttpFile对象实例。</param>
        /// <param name="uploadRuleKeys">替换规则占位符时需要使用到的参数集合。</param>
        /// <returns>解析后的上传路径(已追加上传文件扩展名)。</returns>
        public virtual string ResolveUploadPath(string uploadPathRule, PowerHttpFile file, NameValueCollection uploadRuleKeys)
        {
            if (string.IsNullOrEmpty(uploadPathRule))
            {
                return(file.FileName);
            }

            var uploadPath = string.Concat(uploadPathRule, Path.GetExtension(file.FileName));

            uploadPath = uploadPath.Replace(Year, DateTime.Now.ToString(FormatYear, DateTimeFormatInfo.InvariantInfo));
            uploadPath = uploadPath.Replace(Month, DateTime.Now.ToString(FormatMonth, DateTimeFormatInfo.InvariantInfo));
            uploadPath = uploadPath.Replace(Day, DateTime.Now.ToString(FormatDay, DateTimeFormatInfo.InvariantInfo));
            uploadPath = uploadPath.Replace(Hour, DateTime.Now.ToString(FormatHour, DateTimeFormatInfo.InvariantInfo));
            uploadPath = uploadPath.Replace(Minute, DateTime.Now.ToString(FormatMinute, DateTimeFormatInfo.InvariantInfo));
            uploadPath = uploadPath.Replace(Second, DateTime.Now.ToString(FormatSecond, DateTimeFormatInfo.InvariantInfo));
            var mime = MimeDictionary.GetMime(Path.GetExtension(file.FileName));

            if (mime.Length > 0)
            {
                mime = mime.Substring(0, mime.IndexOf(Slash, StringComparison.Ordinal));
            }

            uploadPath = uploadPath.Replace(Mime, mime);
            var extension = Path.GetExtension(file.FileName);

            if (extension != null)
            {
                uploadPath = uploadPath.Replace(FileType, extension.Replace(Point, string.Empty));
            }

            uploadPath = uploadPath.Replace(Origin, Path.GetFileNameWithoutExtension(file.FileName));
            uploadPath = uploadPath.Replace(Random, this.GetFileRndName());
            uploadPath = uploadPath.Replace(Guid, System.Guid.NewGuid().ToString("N"));
            uploadPath = uploadPath.Replace(SiteId, uploadRuleKeys["SiteId"]);
            uploadPath = uploadPath.Replace(SiteIdentifier, uploadRuleKeys["SiteIdentifier"]);

            uploadPath = this.ResolveUploadPathCore(uploadPath, uploadRuleKeys);

            return(uploadPath);
        }
Esempio n. 2
0
        ///// <summary>
        ///// 文件上传。
        ///// </summary>
        ///// <param name="file">客户端上载的文件。</param>
        ///// <param name="uploadProviderKey">上传提供者Key。</param>
        ///// <param name="uploadRuleKeys">上传目录规则、文件名规则。</param>
        ///// <returns>上传文件结果。</returns>
        //public static UploadFileResult UploadFile(PowerHttpFile file, string uploadProviderKey, NameValueCollection uploadRuleKeys)
        //{
        //    return UploadFile(file, UploadProviders.Providers[uploadProviderKey], uploadRuleKeys);
        //}

        /// <summary>
        /// 文件上传。
        /// </summary>
        /// <param name="file">客户端上载的文件。</param>
        /// <param name="uploadConfig">上传配置。</param>
        /// <param name="savePathFileName">上传路径。</param>
        /// <returns>上传文件结果。</returns>
        public static UploadFileResult UploadFile(PowerHttpFile file, IUploadConfig uploadConfig, string savePathFileName)
        {
            var uploadFileResult = new UploadFileResult();

            try
            {
                file.SaveAs(savePathFileName);
                //if (uploadConfig.EnableWatermark)
                //{
                //    new WatermarkBuilder(WatermarkConfig.Instance).AddWatermark(relativePathFileName);
                //}

                //uploadFileResult.FileName = fileName;

                return(uploadFileResult);
            }
            catch (Exception e)
            {
                uploadFileResult.IsError  = true;
                uploadFileResult.ErrorMsg = e.Message;

                return(uploadFileResult);
            }
        }