<font face="맑은 고딕">제목 그대로입니다.</font> <div><font face="맑은 고딕">모바일로 촬영한 사진 중</font></div> <div><font face="맑은 고딕">세로로 찍은 이미지가 실제로 서버에 업로드시에는 옆으로 누워버리더군요.</font></div> <div><font face="맑은 고딕">(오유에도 같은 문제가 있죠 아마?)</font></div> <div><font face="맑은 고딕"><br></font></div> <div><font face="맑은 고딕">인터넷에 찾아봤더니 PHP로 해결방법은 있던데</font></div> <div><font face="맑은 고딕">ASP.NET에서는 어떻게 처리해야될지 모르겠습니다. ㅠㅠ</font></div> <div><font face="맑은 고딕"><br></font></div> <div><font face="맑은 고딕">우선 제가 만든 이미지 업로드 소스는 아래와 같습니다</font></div> <div><font face="맑은 고딕"><br></font></div> <div><font face="맑은 고딕"><br></font></div> <div><font face="맑은 고딕"><br></font></div> <div><div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword1" style="color:#a71d5d;"><</span>%@ Page Language<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">"C#"</span> ContentType<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">"text/html"</span> ResponseEncoding<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">"utf-8"</span> Debug<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">"true"</span> %<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;"><</span>%@ Import Namespace <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-string" style="color:#63a35c;">"System.IO"</span> %<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;"><</span>%@ Import Namespace <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-string" style="color:#63a35c;">"System.Text"</span> %<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;"><</span>script runat<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-string" style="color:#63a35c;">"server"</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span></font></div> <div style="white-space:pre;height:14px;"></div> <div style="white-space:pre;height:14px;"><span class="cs-default-common-comment" style="color:#999999;"><font face="맑은 고딕">//전역변수 선언</font></span></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword1" style="color:#a71d5d;">string</span> srvRoot, srvPath, srcPath;</font></div> <div style="white-space:pre;height:14px;"></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword1" style="color:#a71d5d;">protected</span> <span class="cs-default-common-keyword1" style="color:#a71d5d;">void</span> Page_Load(<span class="cs-default-common-keyword1" style="color:#a71d5d;">object</span> sender, EventArgs e){</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-comment" style="color:#999999;">//전역변수 초기화</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> Request[<span class="cs-default-common-string" style="color:#63a35c;">"srvRoot"</span>];</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> srvPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> Request[<span class="cs-default-common-string" style="color:#63a35c;">"srvPath"</span>];</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> srcPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> Request[<span class="cs-default-common-string" style="color:#63a35c;">"srcPath"</span>];</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">if</span>( srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-string" style="color:#63a35c;">""</span> ){ srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> Server.MapPath(<span class="cs-default-common-string" style="color:#63a35c;">"\\"</span>); }</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-comment" style="color:#999999;">// 파일컨트롤 선언 및 초기화</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> HttpPostedFile requestFile <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> Request.Files[<span class="cs-default-common-number" style="color:#0099cc;">0</span>];</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-comment" style="color:#999999;">// 파일명, 전체경로 설정</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">string</span> fileName <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> requestFile.FileName;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">string</span> fullPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> srvPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> fileName;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-comment" style="color:#999999;">// 서버에 파일폴더가 존재하지 않을시 생성</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> DirectoryInfo di <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-keyword1" style="color:#a71d5d;">new</span> DirectoryInfo(srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> srvPath);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">if</span>( <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">!</span>di.Exists ){ di.Create(); }</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-comment" style="color:#999999;">// 파일 중복체크</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">string</span> fnm, ext <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fileName.Substring(fileName.LastIndexOf(<span class="cs-default-common-string" style="color:#63a35c;">"."</span>) <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> <span class="cs-default-common-number" style="color:#0099cc;">1</span>);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword0" style="color:#066de2;">FileInfo</span> fi <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-keyword1" style="color:#a71d5d;">new</span> <span class="cs-default-common-keyword0" style="color:#066de2;">FileInfo</span>(fullPath);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">if</span>( fi.Exists ){</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">int</span> fidx <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-number" style="color:#0099cc;">0</span>;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> fnm <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fileName.Substring(<span class="cs-default-common-number" style="color:#0099cc;">0</span>, fileName.LastIndexOf(<span class="cs-default-common-string" style="color:#63a35c;">"."</span>));</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">do</span>{</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> fidx<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span>;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> fileName <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> fnm <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> <span class="cs-default-common-string" style="color:#63a35c;">"["</span> <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> fidx.ToString() <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> <span class="cs-default-common-string" style="color:#63a35c;">"]."</span> <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> ext;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> fullPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> srvRoot <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> srvPath <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> fileName;</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> fi <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">=</span> <span class="cs-default-common-keyword1" style="color:#a71d5d;">new</span> <span class="cs-default-common-keyword0" style="color:#066de2;">FileInfo</span>(fullPath);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> }<span class="cs-default-common-keyword1" style="color:#a71d5d;">while</span>( fi.Exists );</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> }</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> </font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> <span class="cs-default-common-keyword1" style="color:#a71d5d;">try</span>{</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> requestFile.SaveAs(fullPath);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> Response.<span class="cs-default-common-keyword0" style="color:#066de2;">Write</span>(<span class="cs-default-common-string" style="color:#63a35c;">"{\"result\":\""</span> <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> fileName <span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">+</span> <span class="cs-default-common-string" style="color:#63a35c;">"\"}"</span>);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> }<span class="cs-default-common-keyword1" style="color:#a71d5d;">catch</span>{</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> Response.<span class="cs-default-common-keyword0" style="color:#066de2;">Write</span>(<span class="cs-default-common-string" style="color:#63a35c;">"{\"result\":false, \"error\":\"\"}"</span>);</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"> }</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕">}</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;"><</span><span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">/</span>script<span class="cs-default-common-keyword2" style="color:#0086b3;"></span><span class="cs-default-common-keyword1" style="color:#a71d5d;">></span></font></div> <div style="white-space:pre;height:14px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;"><font face="맑은 고딕"><br></font></span></div> <div style="white-space:pre;height:14px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;"><font face="맑은 고딕"><br></font></span></div> <div style="white-space:pre;height:14px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;"><font face="맑은 고딕"><br></font></span></div> <div style="white-space:pre;height:14px;"><span class="cs-default-common-keyword1" style="color:#a71d5d;"><font face="맑은 고딕"><br></font></span></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2">-----------------</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2">따로 제가 만든 위지윅에디터를 이용해 업로드 되는 이미지라</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2">몇가지 정보는 리퀘스트파라미터로 받아오기때문에 소스가 좀 이상할 수 있습니다.</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2">이 부분을 어떻게 수정해야 할까요.... ㅠㅠ</font></div></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2">-----------------</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕" size="2"><span style="line-height:19.5px;">사랑해요 스택오버플로....</span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕">정답찾고 수정한 뒤 글 수정합니다.</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕">이제 보니 본삭금을 안걸었었네요. 뒤늦게 본삭금걸고 자답 씁니다.</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕">아래와 같이 수정 완료하였습니다.</font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><br></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><br></font></div> <div style="height:14px;"><font face="맑은 고딕"><span style="white-space:pre;"><%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" Debug="true" %> <%@ Import Namespace = "System.IO" %> <%@ Import Namespace = "System.Drawing" %> <%@ Import Namespace = "System.Drawing.Imaging" %> <%@ Import Namespace = "System.Text" %> <script runat="server"> //전역변수 선언 string srvRoot, srvPath, srcPath; protected void Page_Load(object sender, EventArgs e){ //전역변수 초기화 srvRoot = Request["srvRoot"]; srvPath = Request["srvPath"]; srcPath = Request["srcPath"]; if( srvRoot == "" ){ srvRoot = Server.MapPath("\\"); } // 파일컨트롤 선언 및 초기화 HttpPostedFile requestFile = Request.Files[0]; // 파일명, 전체경로 설정 string fileName = requestFile.FileName; string fullPath = srvRoot + srvPath + fileName; // 서버에 파일폴더가 존재하지 않을시 생성 DirectoryInfo di = new DirectoryInfo(srvRoot + srvPath); if( !di.Exists ){ di.Create(); } // 파일 중복체크 string fnm, ext = fileName.Substring(fileName.LastIndexOf(".") + 1); FileInfo fi = new FileInfo(fullPath); if( fi.Exists ){ int fidx = 0; fnm = fileName.Substring(0, fileName.LastIndexOf(".")); do{ fidx++; fileName = fnm + "[" + fidx.ToString() + "]." + ext; fullPath = srvRoot + srvPath + fileName; fi = new FileInfo(fullPath); }while( fi.Exists ); } try{ requestFile.SaveAs(fullPath); // 파일 이미지의 확장자가 JPG 또는 JPEG 일 경우 EXIF 데이터 추출하여 이미지 270도 회전 string fileext = fullPath.Substring(fullPath.LastIndexOf(".") + 1, 3); fileext = fileext.ToUpper(); if( fileext == "JPG" ){ string file = fullPath; FileInfo info = new FileInfo(file); long filesize = info.Length; FileStream stream = new FileStream(file,FileMode.Open,FileAccess.Read); System.Drawing.Image img = System.Drawing.Image.FromStream(stream,false,false); PropertyItem item = img.GetPropertyItem(0x0112); int orientation = item.Value[0]; stream.Dispose(); if( orientation == 6 ){ System.Drawing.Image rotateimg = System.Drawing.Image.FromFile(fullPath); rotateimg.RotateFlip(RotateFlipType.Rotate270FlipXY); rotateimg.Save(fullPath); rotateimg.Dispose(); } } Response.Write("{\"result\":\"" + fileName + "\"}"); }catch{ Response.Write("{\"result\":false, \"error\":\"\"}"); } } </script></span></font></div> <div style="white-space:pre;height:14px;"><font face="맑은 고딕"><br></font></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.