Example #1
0
        /// <summary>
        /// 图片上传
        /// </summary>
        /// <param name="file"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <AjaxResponse> Upload(IFormFile file, string param = "")
        {
            if (file == null)
            {
                return(await Task.FromResult(new AjaxResponse(false) { Result = "文件不存在" }));
            }

            #region 1.0 生成文件dto对象
            CreateFileInput attachFile = new CreateFileInput
            {
                FileName = ContentDispositionHeaderValue
                           .Parse(file.ContentDisposition)
                           .FileName
                           .Trim('"'),
                Describe    = param,
                ContentType = file.ContentType,
                FileSize    = GetFileSize(file.Length),
            };
            attachFile.FileType = Path.GetExtension(attachFile.FileName);
            #endregion

            #region 2.0 创建文件的存放路径
            string relativeFilePath = $"\\upload\\product\\{Clock.Now.ToString("yyyy_MM")}\\";
            string fileDir          = hostingEnv.WebRootPath + relativeFilePath;
            if (!Directory.Exists(fileDir))
            {
                Directory.CreateDirectory(fileDir);
            }
            #endregion

            #region 3.0 设置文件的项目路径
            string fileName = $"{ Clock.Now.ToString("yyyyMMdd") }_{GetUniqValue()}{attachFile.FileType}";
            attachFile.FilePath = relativeFilePath.Replace("\\", "/") + $"{fileName}";
            #endregion

            #region 4.0 保存文件到数据和具体的位置中
            var newFile = await _fileAppService.Create(attachFile);

            //3:将文件拷贝到对应的位置
            string newFilePath = $"{ fileDir }{ fileName }";
            using (FileStream fs = System.IO.File.Create(newFilePath))
            {
                // 复制文件新路径
                await file.CopyToAsync(fs);

                // 清空缓冲区数据
                fs.Flush();
            }
            #endregion

            //返回结果集
            return(await Task.FromResult(new AjaxResponse(true) { Result = ObjectMapper.Map <FileDto>(newFile) }));
        }
Example #2
0
        /// <summary>
        /// 上传图片的方法
        /// </summary>
        /// <param name="file"></param>
        /// <param name="module"></param>
        /// <returns></returns>
        private async Task <FileDto> SaveFile(IFormFile file, string module)
        {
            if (file == null)
            {
                throw new UserFriendlyException("文件不存在");
            }

            #region 1.0 生成文件dto对象
            CreateFileInput attachFile = new CreateFileInput
            {
                FileName = ContentDispositionHeaderValue
                           .Parse(file.ContentDisposition)
                           .FileName
                           .Trim('"'),
                Describe    = "",
                Module      = module,
                ContentType = file.ContentType,
                FileSize    = GetFileSize(file.Length),
            };
            attachFile.FileType = Path.GetExtension(attachFile.FileName);
            #endregion

            #region 2.0 创建文件的存放路径
            string relativeFilePath = $"\\upload\\{module}\\{Clock.Now.ToString("yyyy_MM")}\\";
            string fileDir          = hostingEnv.WebRootPath + relativeFilePath;
            if (!Directory.Exists(fileDir))
            {
                Directory.CreateDirectory(fileDir);
            }
            #endregion

            #region 3.0 设置文件的项目路径
            string fileName = $"{ Clock.Now.ToString("yyyyMMdd") }_{GetUniqValue()}{attachFile.FileType}";
            attachFile.FilePath = relativeFilePath.Replace("\\", "/") + $"{fileName}";
            #endregion

            #region 4.0 保存文件到数据和具体的位置中
            var newFile = await _fileAppService.Create(attachFile);

            //3:将文件拷贝到对应的位置
            string newFilePath = $"{ fileDir }{ fileName }";
            using (FileStream fs = System.IO.File.Create(newFilePath))
            {
                // 复制文件新路径
                await file.CopyToAsync(fs);

                // 清空缓冲区数据
                fs.Flush();
            }
            #endregion

            return(await Task.FromResult(newFile));
        }