Example #1
0
        /// <summary>
        /// 上传单个文件
        /// </summary>
        /// <param name="iFileModule"></param>
        /// <param name="fileCollection"></param>
        /// <returns></returns>
        public async static Task <TData <string> > UploadFile(int iFileModule, IFormFileCollection files)
        {
            string         dirModule = string.Empty;
            TData <string> obj       = new TData <string>();

            if (files == null || files.Count == 0)
            {
                obj.Message = "请先选择文件!";
                return(obj);
            }
            if (files.Count > 1)
            {
                obj.Message = "一次只能上传一个文件!";
                return(obj);
            }
            var file = files[0];

            switch (iFileModule)
            {
            case (int)UploadFileType.Portrait:
                dirModule = UploadFileType.Portrait.ToString();
                break;

            case (int)UploadFileType.News:
                dirModule = UploadFileType.News.ToString();
                break;

            case (int)UploadFileType.Cert:
                if (file.Length > 5 * 1024 * 1024)     // 5MB
                {
                    obj.Message = "文件最大限制为 5MB";
                    return(obj);
                }
                dirModule = UploadFileType.Cert.ToString();
                break;

            case (int)UploadFileType.Paper:
                dirModule = UploadFileType.Paper.ToString();
                break;

            default:
                obj.Message = "请指定上传到的模块";
                return(obj);
            }
            string fileExtension = CommonHelper.GetCustomValueWhenEmpty(Path.GetExtension(file.FileName), ".png");

            string newFileName = SecurityHelper.GetGuid() + fileExtension;
            string dir         = "Resource" + Path.DirectorySeparatorChar + dirModule + Path.DirectorySeparatorChar + DateTime.Now.ToString("yyyy-MM-dd").Replace('-', Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;

            string absoluteDir      = Path.Combine(GlobalContext.HostingEnvironment.ContentRootPath, dir);
            string absoluteFileName = string.Empty;

            if (!Directory.Exists(absoluteDir))
            {
                Directory.CreateDirectory(absoluteDir);
            }
            absoluteFileName = absoluteDir + newFileName;
            try
            {
                using (FileStream fs = File.Create(absoluteFileName))
                {
                    await file.CopyToAsync(fs);

                    fs.Flush();
                }
                obj.Result      = Path.AltDirectorySeparatorChar + ConvertDirectoryToHttp(dir) + newFileName;
                obj.Message     = Path.GetFileNameWithoutExtension(CommonHelper.GetCustomValueWhenEmpty(file.FileName, newFileName));
                obj.Description = (file.Length / 1024).ToString(); // KB
                obj.Tag         = 1;
            }
            catch (Exception ex)
            {
                obj.Message = ex.Message;
            }
            return(obj);
        }