본문 바로가기
ASP.NET MVC

ASP.NET] 경로 노출없이, idx로 파일정보 조회하여 ZIP 다운로드 처리

by Fastlane 2021. 12. 6.
728x90
반응형
        public ActionResult ResumeDownload(int idx) 
        {

            try
            {

                DataSet ds = DataAccess.Get_FileInfo(idx); //idx로 db에서 파일정보 가져오기

                string fileName = ds.Tables[0].Rows[0]["FileName"].ToString(); //파일명 

                var filePath = Server.MapPath(AttachFilePath.AttachedFilePath + fileName); //파일경로 가져오기

                if (System.IO.File.Exists(filePath)) //파일 존재여부 확인
                {

                    PersonalInfoLog log = new PersonalInfoLog
                    log.Desc = "이러쿵 저러쿵 해서 개인정보 파일 다운로드 받았음";
                    log.IP = Request.ServerVariables["REMOTE_ADDR"];
                    log.RegisterIdx = 로그인한 사람 idx
                    log.RegDate = DateTime.Now;

                    DataAccess.Add_DownloadLog(log); //개인정보 다운로드 이력 insert 

                    using (ZipFile zip = new ZipFile())
                    {
                        zip.Password = DateTime.Now.ToString("yyyyMMdd"); //AddFile 앞에 있어야 함. 
                        zip.AddFile(resumePath, "");

                        using (var stream = new MemoryStream())
                        {
                            stream.Seek(0, SeekOrigin.Begin);
                            zip.Save(stream);
                            return File(stream.ToArray(), "appliation/zip", "개인정보파일.zip");
                        }
                    }
                }
                else {

                    throw new HttpException(404, "파일이 존재하지 않습니다.");//RedirectTo NoFoundPage
                }

            }
            catch (Exception ex) {

                throw new HttpException(404, ex.Message);//RedirectTo NoFoundPage
            }


        }
728x90
반응형

댓글