프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / ConvertService / ServiceBase / FileDownloadSite / Controllers / HomeController.cs @ 53c9637d

이력 | 보기 | 이력해설 | 다운로드 (1.9 KB)

1 53c9637d taeseongkim
using System;
2
using System.Collections.Generic;
3
using System.IO;
4
using System.Linq;
5
using System.Threading.Tasks;
6
using FileDownloadSite.Models.Home;
7
using Microsoft.AspNetCore.Mvc;
8
using Microsoft.Extensions.FileProviders;
9
using MimeKit;
10
11
namespace FileDownloadSite.Controllers
12
{
13
    public class HomeController : Controller
14
    {
15
        private readonly IFileProvider fileProvider;
16
17
        public HomeController(IFileProvider fileProvider)
18
        {
19
            this.fileProvider = fileProvider;
20
        }
21
22
        public IActionResult Index()
23
        {
24
            return View();
25
        }
26
27
        /// <summary>
28
        /// 파일 폴더의 파일 리스트
29
        /// </summary>
30
        /// <param name="FileName"></param>
31
        /// <returns></returns>
32
        public IActionResult GetFileList()
33
        {
34
            var model = new FilesViewModel();
35
36
            foreach (var item in this.fileProvider.GetDirectoryContents(""))
37
            {
38
                model.Files.Add(
39
                    new FileDetails { Name = item.Name, Path = item.PhysicalPath });
40
            }
41
            return Ok(model.Files);
42
        }
43
44
        /// <summary>
45
        // 지정된 파일을 가져온다.
46
        /// </summary>
47
        /// <param name="FileName"></param>
48
        /// <returns></returns>
49
        public async Task<IActionResult> GetFile(string FileName)
50
        {
51
            var file = this.fileProvider.GetFileInfo(FileName);
52
53
            if (file.Exists)
54
            {
55
                var memory = new MemoryStream();
56
                using (var stream = file.CreateReadStream())
57
                {
58
                    await stream.CopyToAsync(memory);
59
                }
60
                memory.Position = 0;
61
                return File(memory, MimeKit.MimeTypes.GetMimeType(FileName), Path.GetFileName(FileName));
62
            }
63
            else
64
            {
65
                return new NotFoundResult();
66
            }
67
        }
68
    }
69
}
클립보드 이미지 추가 (최대 크기: 500 MB)