コード例 #1
0
 public Task <ImageModel> CreateAsync(UploadedImageModel entry)
 {
     throw new NotImplementedException();
 }
コード例 #2
0
        public async Task <IList <UploadedImageModel> > Upload(IList <IFormFile> files)
        {
            if (files == null || files.Count == 0)
            {
                return(null);
            }

            var fileApiBase = options.FileApiBase;

            if (fileApiBase.EndsWith("/"))
            {
                fileApiBase = fileApiBase.Remove(fileApiBase.Length
                                                 - 1, 1);
            }

            IList <UploadedImageModel> results = new List <UploadedImageModel>();

            foreach (var file in files)
            {
                var fileName       = Path.GetFileNameWithoutExtension(file.FileName);
                var extensionName  = Path.GetExtension(file.FileName);
                var serverFileName = GenerateFileNameToUpload(fileName, extensionName);

                // 서버 저장 경로
                var path = Path.Combine(GenerateDirectoryToUpload(), serverFileName);

                // 파일 액세스 경로
                var src = $"{fileApiBase}/{Guid.NewGuid().ToString("n")}-{Uri.EscapeUriString(serverFileName)}{extensionName}";

                var uploaded = new UploadedImageModel
                {
                    ContentType   = file.ContentType,
                    FileName      = fileName,
                    FileExtension = extensionName,
                    Size          = file.Length,
                    Src           = src,
                    Path          = path,
                };

                try
                {
                    using (var stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
                    {
                        await file.CopyToAsync(stream);

                        stream.Flush();
                        stream.Close();
                    }

                    results.Add(uploaded);
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, $"ERROR: Write a file stream. fileName={fileName}{extensionName} | path={path}");

                    throw;
                }
            }

            return(results);
        }