제2의 비엔지니어 인생관을 꿈꾸며

Posted
Filed under C#
가끔 개발하다보면 .net framework 버전 vs 비주얼 스튜디오와의 버전 vs 컴파일러버전 과의 궁금할때가있다. 물론 개발만 잘하면되는데, 그래도 궁금하다. .framework 1.0 (1.1?)은 공식적으로 버린지 오래고? ,  2.0(설치되어있어야함) ~ 비쥬얼 스튜디오 자신의 버전까지 지원한다. VisualStudio 2012는 3.0  ~ 4.5까지 설정에 따라 컴파일 이 된다. (단, framwork가 없으면 설치 해야함)


사용자 삽입 이미지



[가로버전]



이미지 출처:  http://sktype.tistory.com/112
이미지 편집 :  by sooli.com Pluginn 

2018/02/08 19:13 2018/02/08 19:13
Posted
Filed under C#
2년전 쯤 모바일 웹에서 이미지 업로드를 하는 페이지가 있었는데, 모바일로 사진을 찍고, 업로드를 하면, 세로로 촬영한 이미지가 가로로(옆으로) 등록되는 기이한 현상이 일어났다. 당시 잠깐 이유를 생각해보면, 스마트폰의 사진 해상도가 고해상도를 지원하면서, 촬영되는 사진이 아마 폭에따라  가로로 저장되는 이유가 아닐가 생각한다.  아래 코드는 classic ASP 에서 사용하기위해 .net 으로 작성된 lib(dll)
코드이다. 그 당시 버전 관리를 위해 SN(strong name) 생성 후 Regasm ,  gacutil 로 assembly 등록 후  classic ASP 에서 사용하였다

작동원리 : 방법은 간단하다 , 이미지의 rotaton 정보를 가지고 그만큼 반대로 또는 정방향으로 회전시켜 사진을 똑바로 세우는것이다.
아래 이미지는 이미지의 Rotation 정보를 얻어냈을때 리턴되는 값들이다 
 
1:정방향  2:정방향이긴한데, 뒤집어진경우 , 8: 90도 우측으로 기울어진경우 , 아래 이미지를 참고하여 로테이션 시키면된다.


사용자 삽입 이미지


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

namespace MimiClass
{
    public class Utility
    {
        private string imgName;
        private int stdWidth;

        public string targeImage { set { this.imgName = value;}}
        public int targetWidth { set { this.stdWidth = value;}}
        public Utility()
        {
        }

        public void doReSize()
        {
            this.reSizeEXIF();
        }


        public void reSizeEXIF()       
       {

           //  당시 스토리지를 UNC  명을 익식하게게끔 하려했으나 보안 오류떠서, 네트워크 드라이브로 대체 했던기억이 난다.  
           // 물론 로컬로 저장되는 이미지인경우 아무 상관없다.
          

            string imageF = @"X:\파일명.jpg";
            string iPath = string.Empty;
            int EXIF = 0;
            int iW = 0, iH = 0, iTW = 0, iTH = 0;
            int iStW;
            iStW = this.stdWidth;
            PropertyItem[] PropertyItems;
            Image simg = new Bitmap(imageF);
            Image tImg = null;
            PropertyItems = simg.PropertyItems;
            iW = simg.Width;
            iH = simg.Height;
            foreach (PropertyItem p in PropertyItems)
            {
                if ((p.Id == 0x0112 || p.Id == 5029 || p.Id == 274))
                {
                    EXIF = (int)p.Value[0];
                    break;
                }
            }
            if (EXIF == 0)
            {
                setEXIFRoate("W", ref simg, out tImg, iStW, iW, iH, ref iTW, ref iTH);
            }
            else
            {
                if (EXIF == 6)
                {
                    setEXIFRoate("H", ref simg, out tImg, iStW, iW, iH, ref iTW, ref iTH);
                    tImg.RotateFlip(RotateFlipType.Rotate90FlipNone);
                }
                else if (EXIF == 8)
                {
                    setEXIFRoate("W", ref simg, out tImg, iStW, iW, iH, ref iTW, ref iTH);
                    tImg.RotateFlip(RotateFlipType.Rotate270FlipNone);
                }
                else if (EXIF == 3)
                {
                    setEXIFRoate("W", ref simg, out tImg, iStW, iW, iH, ref iTW, ref iTH);
                    tImg.RotateFlip(RotateFlipType.Rotate180FlipNone);
                }
            }
            imageSave(tImg, imageF);

            simg.Dispose();
            tImg.Dispose();

            simg = null;
            tImg = null;        
        }
        private void imageSave(Image t, string imageF)
        {
            string imageT = string.Empty;
            string iPath = string.Empty;
            imageT = imageF.Substring(imageF.LastIndexOf("\\"));
            iPath = imageF.Substring(0, imageF.LastIndexOf('\\'));
            iPath = string.Concat(iPath, "\\re\\");
            if (!Directory.Exists(iPath))
                Directory.CreateDirectory(iPath);

            iPath = string.Concat(iPath, imageT);

            t.Save(@iPath);
            t.Dispose();
            t = null;
        }
        private void setEXIFRoate(string stGb, ref Image s, out Image t, int iStW, int iW, int iH, ref int iTW, ref int iTH)
        {
            // 이미지가 width가 넓은 사진일경우
            if (stGb == "W")
            {
                // 가로가 길경우 가로와 세로를 바꾼
                iTW = iStW;
                iTH = Convert.ToInt32((iStW * 1.0) / ((iW * 1.0) / (iH * 1.0)));
            }
            else
            {
                // 세로가 길경우 세로와 가로를 바꿈 
                iTH = iStW;
                iTW = Convert.ToInt32((iStW * 1.0) / ((iH * 1.0) / (iW * 1.0)));
            }
            t = new Bitmap(iTW, iTH);
            Graphics g = Graphics.FromImage(t);

           // 화질유지를 위해 고화질 모드 설정
            g.InterpolationMode = InterpolationMode.High;
           
           // 딱 자르면 흰색 라인이 생겨서 +1 추가더 자르고 -1 로 뺏
            g.DrawImage(s, new Rectangle(-1, -1, iTW + 1, iTH + 1)); 음
            g.Dispose();
            g = null;
        }
    }
}
2018/02/08 16:17 2018/02/08 16:17
Posted
Filed under C#

다음 목록에서는 Visual Studio 2012 또는 Visual Studio 2010 SP1에서 만든 프로젝트에 대한 Visual Studio 2015 및 Visual Studio 2013의 지원에 대해 설명합니다. 이 목록을 참고하여 Visual Studio 2015, Visual Studio 2013, Visual Studio 2012 또는 Visual Studio 2010 SP1에서 프로젝트를 현재 상태 그대로 열 수 있는지 또는 호환성을 유지하도록 프로젝트를 수정해야 할지 결정할 수 있습니다.

프로젝트 형식 호환성
유니버설 Windows 플랫폼 앱 유니버설 Windows 앱 도구를 설치하려면 Visual Studio 설치 프로그램에서 사용자 지정 또는 수정을 선택한 다음 유니버설 Windows 앱 개발 도구를 선택합니다.

Windows 10용 UWP(유니버설 Windows 플랫폼) 앱 개발은 Windows 10 또는 Windows 8.1의 Visual Studio 2015에서만 지원됩니다.
Windows 스토어 앱 Windows 8.1 및 Windows Phone 8.1을 대상으로 하는 유니버설 앱을 포함한 Windows 스토어 앱 개발은 Windows 8.1 및 Windows 10에서 지원됩니다. 기존 Windows 8 프로젝트에 대한 서비스가 계속 제공되지만 새로운 Windows 8 프로젝트를 만들 수는 없습니다.Windows 8.1 프로젝트는 특정 참조 형식에 따라서만 결정됩니다. 자세한 내용은 프로젝트의 참조 관리을 참조하십시오. Note:  Visual Studio 2015 또는 Visual Studio 2013을 사용하여 만든 Windows 8.1 프로젝트를 Visual Studio 2012에서 열 수 없습니다.Visual Studio 2015 및 Visual Studio 2013을 사용하여 만든 Windows 8.1 프로젝트는 해당 버전을 대상으로 하고 Visual Studio 2012는 Windows 8을 대상으로 하는 Windows 8 프로젝트만 지원하기 때문입니다.
.NET Framework 4.5.1 적절한 멀티 타게팅 팩을 설치한 후 Visual Studio 2015 및 Visual Studio 2013에서 이러한 프로젝트를 만들어 사용할 수 있습니다. Visual Studio 2010 SP1에서는 이 프로젝트가 지원되지 않습니다.
.NET Framework 4.5 Visual Studio 2015, Visual Studio 2013 및 Visual Studio 2012에서는 이 프로젝트를 만들고 열 수 있지만 Visual Studio 2010 SP1에서는 그럴 수 없습니다. 자세한 내용은 마이그레이션 가이드을 참조하세요.
BizTalk BizTalk Server 프로젝트는 Visual Studio 2015 또는 Visual Studio 2013과 호환되지 않습니다.
C#/Visual Basic Silverlight 4 응용 프로그램 또는 클래스 라이브러리 Visual Studio에서 프로젝트를 자동으로 업데이트하도록 허용하면 Visual Studio 2013 또는 Visual Studio 2012에서 프로젝트를 열 수 있습니다.
C#/Visual Basic Webform 또는 Windows Form Visual Studio 2013 및 Visual Studio 2012에서 프로젝트를 열 수 있습니다.
Visual Basic 6 및 Visual C++ 6 Visual Studio 2012와 Visual Studio 2013에서는 Visual Basic 6 또는 Visual C++ 6으로 빌드된 응용 프로그램을 디버깅할 수 없습니다. 이 응용 프로그램을 디버깅하려면 이전 버전의 Visual Studio를 사용하세요.
코딩된 UI 테스트 Visual Studio에서 프로젝트를 자동으로 업데이트하도록 허용하면 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.
F# Visual Studio 2010 SP1에서 만든 프로젝트를 Visual Studio에서 업그레이드하도록 허용하면 Visual Studio 2013 및 Visual Studio 2012에서 프로젝트를 열 수 있습니다. 하지만 이전 버전의 Visual Studio에서 만든 Silverlight 프로젝트를 Visual Studio 2013으로 업그레이드할 수는 없습니다. 대신 Visual Studio 2013에서 Silverlight 프로젝트를 만들어 코드를 복사해야 합니다.Visual Studio 2013에서 만든 Silverlight 프로젝트는 Silverlight 5를 대상으로 합니다.
LightSwitch Visual Studio에서 프로젝트를 자동으로 업그레이드하도록 허용하면 Visual Studio 2013에서만 프로젝트를 열 수 있습니다.
로컬 데이터베이스 캐시 Visual Studio 2013에는 로컬 데이터베이스 캐시 템플릿과 데이터 동기화 구성 대화 상자가 포함되어 있지 않습니다. Microsoft Synchronization Services v1.0이 설치된 경우 Visual Studio 2013을 사용하여 Visual Studio 2010에서 만든 프로젝트를 열고 실행할 수 있지만 이 프로젝트를 Visual Studio 2013에서 업데이트하려면 코드에서 수동으로 변경해야 합니다. 또는 Visual Studio 2010을 계속 사용하여 이 프로젝트를 유지하고 업데이트할 수 있습니다. 새로운 개발의 경우 Microsoft Sync Framework에서 제공하는 새로운 동기화 모델을 대상으로 합니다. 자세한 내용은 Microsoft Sync Framework 개발자 센터를 참조하세요.
모델-뷰-컨트롤러 프레임워크 Visual Studio 2010 SP1은 MVC 2 및 MVC 3만 지원하고 Visual Studio 2012는 MVC 3 및 MVC 4만 지원하며 Visual Studio 2013은 MVC 4만 지원합니다. MVC 2에서 MCV 3로 자동 업그레이드하는 방법에 대한 자세한 내용은 ASP.NET MVC 3 응용 프로그램 업그레이더를 참조하세요. MVC 2에서 MVC 3로 수동 업그레이드하는 방법에 대한 자세한 내용은 ASP.NET MVC 3 도구 업데이트로 ASP.NET MVC 2 프로젝트 업그레이드를 참조하세요. MVC 3에서 MVC 4로 수동 업그레이드하는 방법에 대한 자세한 내용은 ASP.NET MVC 3 프로젝트를 ASP.NET MVC 4로 업그레이드를 참조하세요. 프로젝트 대상이 .NET Framework 3.5 SP1일 경우 대상을 변경하여 .NET Framework 4를 사용해야 합니다.
모델링 Visual Studio에서 프로젝트를 자동으로 업데이트하도록 허용하면 Visual Studio 2013, Visual Studio 2012 또는 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.

Team Foundation에서 모델링 프로젝트를 빌드할 때 프로젝트의 레이어 유효성 검사를 시도합니다.Visual Studio 2013에서 Team Foundation Build는 Visual Studio 2010 SP1에서 만든 모델링 프로젝트의 레이어 유효성을 검사할 수 없습니다. 하지만 Visual Studio 2010 SP1에서는 Team Foundation Build가 Visual Studio 2013에서 만든 모델링 프로젝트의 레이어 유효성을 검사할 수 있습니다.
MPI/클러스터 디버깅 Visual Studio 2013, Visual Studio 2012 또는 Visual Studio 2010 SP1을 실행하는 컴퓨터에 같은 버전의 런타임 또는 도구가 설치되어 있으면 세 버전 모두에서 이 프로젝트를 열 수 있습니다.
MSI 설치(.vdproj) 이 프로젝트는 해당 프로젝트 형식을 지원하지 않으므로 Visual Studio 2013에서 열 수 없습니다. 대부분의 Windows 플랫폼과 응용 프로그램 런타임을 직접 지원하는 무료 배포 솔루션인 ISLE(InstallShield Limited Edition for Visual Studio)를 사용하는 것이 좋습니다. ISLE를 사용하여 Visual Studio 설치 관리자 프로젝트에서 데이터 및 설정을 가져올 수도 있습니다. .
Office 2007 VSTO 프로젝트를 업그레이드하여 Office 2013 및 .NET Framework 4를 대상으로 지정할 경우 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 이 프로젝트를 열 수 있습니다.
Office 2010 VSTO 프로젝트 대상이 .NET Framework 4일 경우 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 이 프로젝트를 열 수 있습니다. 다른 모든 프로젝트에는 단방향 업그레이드가 필요합니다.
리치 인터넷 응용 프로그램 프로젝트를 업그레이드할 경우 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 이 프로젝트를 열 수 있습니다.
SharePoint 2007 Visual Studio 2013에서는 이 프로젝트를 열 수 없습니다. 그러나 프로젝트를 SharePoint 2010으로 수동 업그레이드할 경우 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다. SharePoint 2007을 업그레이드하는 방법은 SharePoint 2007에서 SharePoint 2010으로 마이그레이션(IT 전문가용)2007 워크플로를 Visual Studio 및 SharePoint 2010으로 마이그레이션 및 SharePoint Server 2010용 SharePoint Enterprise 검색 마이그레이션 도구를 참조하세요.
SharePoint 2010 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.
SketchFlow Visual Studio에서 WPF 4.5/Silverlight 5로 프로젝트를 업그레이드하도록 허용하면 Visual Studio 2012 및 Visual Studio 2013에서 프로젝트를 열 수 있습니다.
SQL Server 2008 Express 데이터베이스 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다. 이전 버전의 SQL Server에서 만든 데이터베이스 파일(.mdf)이 있을 경우 SQL Server Express LocalDB에서 이 데이터베이스 파일을 사용하려면 먼저 SQL Server 2012로 업그레이드해야 합니다. 하지만 데이터베이스가 더 이상 이전 버전의 SQL Server와 호환되지 않습니다. 업그레이드하지 않으면 같은 컴퓨터에 Visual Studio 2013를 설치 및 사용하여 SQL Server 2008 Express의 데이터베이스를 계속 사용할 수 있습니다. 자세한 내용은 방법: LocalDB로 업그레이드하거나 SQL Server Express 계속 사용을 참조하세요.
SQL Server 2008 R2 Express SQL Server 2008 R2, Visual Studio 2013 또는 Visual Studio 2010 SP1을 실행하는 컴퓨터에 Visual Studio 2012 Express가 설치되어 있으면 세 버전 모두에서 프로젝트를 열 수 있습니다.
SQL Server 보고서 프로젝트 Visual Studio 2013 및 Visual Studio 2012에서 프로젝트를 열 수 있습니다. 로컬 모드에서만(즉, SQL Server에 연결되어 있지 않은 경우) Visual Studio 2010의 뷰어와 연결된 컨트롤에 대해 디자인 타임 환경을 가져올 수 없습니다. 하지만 프로젝트는 런타임에 올바르게 작동합니다. Caution:  Visual Studio 2013 특정 기능을 추가할 경우 보고서 스키마가 자동으로 업그레이드되며 Visual Studio 2012에서 더 이상 프로젝트를 열 수 없습니다.
단위 테스트 Microsoft Test Manager, Visual Studio 2013 및 Visual Studio 2010 SP1에서 Visual Studio 2012를 사용하여 이러한 버전에서 만든 테스트를 열 수 있습니다.
Visual C++ Visual Studio 2013을 사용하여 Visual Studio 2012 또는 Visual Studio 2010 SP1에서 만든 C++ 프로젝트를 열 수 있습니다.Visual Studio 2013 빌드 환경을 사용하여 Visual Studio 2012에서 만든 프로젝트를 빌드하려면 같은 컴퓨터에 두 버전의 Visual Studio가 모두 설치되어 있어야 합니다. 자세한 내용은 방법: Visual C++ 프로젝트를 Visual Studio 2015로 업그레이드을 참조하세요.
Visual Studio 2010 웹 Visual Studio에서 프로젝트를 자동으로 업그레이드하도록 허용하면 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.
Visual Studio 2010 데이터베이스(.dbproj) 프로젝트를 SQL Server 데이터 도구 데이터베이스 프로젝트로 변환하면 Visual Studio 2013에서 열 수 있습니다. 그러나 Visual Studio 2013에서는 이러한 아티팩트를 지원하지 않습니다.

- 단위 테스트
- 데이터 생성 계획
- 데이터 비교 파일
- 정적 코드 분석을 위한 사용자 지정 규칙 확장
- server.sqlsettings
- .sqlcmd 파일
- 사용자 지정 배포 확장
- 부분 프로젝트(.files)

SQL Server 데이터 도구를 설치할 경우 변환 후에 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다. 자세한 내용은 Microsoft SQL Server Data Tools를 참조하세요.
Visual Studio 2010 Visual Database Tools Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 이 프로젝트를 열 수 있습니다.
Visual Studio Lab Management Microsoft Test Manager, Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1을 사용하여 이러한 버전에서 만든 환경을 열 수 있습니다. 그러나 환경을 만들기 전에 Microsoft Test Manager 버전이 Team Foundation Server 버전과 일치해야 합니다.
Visual Studio 매크로 이 프로젝트는 해당 프로젝트 형식을 지원하지 않으므로 Visual Studio 2013에서 열 수 없습니다.
Visual Studio SDK/VSIX Visual Studio SDK 프로젝트를 Visual Studio 2013으로 업그레이드 한 후에는 Visual Studio 2012에서 열 수 없습니다. 자세한 내용은 방법: Visual Studio 2015로 확장성 프로젝트 마이그레이션을 참조하십시오.
Visual Studio용 Microsoft Azure 도구 Visual Studio용 Microsoft Azure 도구 버전 2.1을 사용하는 경우 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다. 프로젝트 대상이 이전 버전일 경우 Visual Studio에서 프로젝트를 버전 2.1로 업그레이드하도록 허용하면 Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.
Windows Communication Foundation, Windows Presentation Foundation Visual Studio 2013, Visual Studio 2012 및 Visual Studio 2010 SP1에서 이 프로젝트를 열 수 있습니다.
Windows Mobile 이 프로젝트는 해당 프로젝트 형식을 지원하지 않으므로 Visual Studio 2013에서 열 수 없습니다.
Windows Phone 7.1 Visual Studio에서 Windows Phone 8.0으로 프로젝트를 업그레이드하도록 허용하면 Visual Studio 2012 및 Visual Studio 2013에서 프로젝트를 열 수 있습니다.
기타 Visual Studio 2012, Visual Studio 2013 및 Visual Studio 2010 SP1에서 대부분의 다른 프로젝트 형식을 열 수 있습니다.
FrontPage 웹 사이트 이 프로젝트는 해당 프로젝트 형식을 지원하지 않으므로 Visual Studio 2013에서 열 수 없습니다.
이식 가능한 클래스 라이브러리 Visual Studio에서 프로젝트를 자동으로 업데이트하도록 허용하면 Visual Studio 2013, Visual Studio 2012 또는 Visual Studio 2010 SP1에서 프로젝트를 열 수 있습니다.

- Silverlight 4를 대상으로 하는 프로젝트는 Silverlight 5를 대상으로 합니다.
- Windows Phone 7.0 또는 Windows Phone 7.5를 대상으로 하는 프로젝트는 Windows Phone 8을 대상으로 합니다.
- Xbox 360을 대상으로 하던 프로젝트가 더 이상 Xbox 360을 대상으로 하지 않습니다.
클라우드 서비스 프로젝트와 같은 Azure 프로젝트(확장명 .ccproj) 및 Azure 리소스 관리자 프로젝트(클라우드 배포 프로젝트)(확장명 .deployproj) 이러한 형식의 프로젝트를 열려면 먼저 Azure SDK for.NET을 설치한 다음 프로젝트를 엽니다.
출처 : https://msdn.microsoft.com/ko-kr/library/hh266747.aspx
2018/02/08 15:51 2018/02/08 15:51
Posted
Filed under jQuery
IFRAME 요소(HTML5 지원)

iframe 요소는 인라인 프레임(Inline FRAME)을 표시한다.
- 인라인 프레임은 문서 내에 다른 문서를 넣기 위한 기술이다
- HTML5로 바뀌면서 frame 요소는 사라졌지만 iframe 요소는 남았다.
- HTML5에 새로이 추가된 속성 및 사라진 속성들이 존재한다.

src 속성
src 속성은 인라인 프레임으로 제공할 소스(source)를 지정한다.


sandbox 속성
HTML5에서 새로이 추가된 속성으로서, 보호구역으로 지정하여 해당 프레임에 삽입되는 페이지에 다음과 같은 제한을 둘 수 있다.

<iframe src="test.html" ></iframe>
*  실제 존재하지 않는 도메인(오리진)에 속한 것으로 간주함. 따라서 자신이 소속된 도메인과도(allow-scripts에 의해 실행이 가능
    해져도)  통신할 수 없음
* 플러그인(ActiveX, 플래시등) 실행금지
* Javascript 사용금지
* 폼 요소에 의한 페이지 호출금지
* 부모 문서를 대체하는 브라우징이 불가능

위의 제한이 너무 엄격하여 iframe 안의 페이지가 동작하지 않을때는 sandbox 속성에 다음과 같은 값을 지정하여 샌드박스 제한을 완화할 수 있다.

| allow-same-origin
원칙적으로 다른 도메인의 문서가 인라인 프레임을 통해 제공될 때는 부모 문서(parent document)에 접근할 수 없다. 이럴 때는 allow-same-orign 속성값을 이용하면 다른 도메인의 문서를 같은 도메인의 문서로 간주하여 부모 문서에 접근할 수 있게 된다(서버와의 통신, 스토리지 이용등)
<iframe src="http://www.example.com/test.html" sandbox="allow-same-origin"></iframe>






| allow-top-navigation
원칙적으로 다른 도메인의 문서가 인라인 프레임을 통해 제공될 때는 부모 문서를 대체하는 브라우징은 불가능하다. 이럴 때는 allow-top-navigation 속성값을 이용하면 인라인 프레임에 있는 링크를 클릭했을 때 부모 문서가 사라지고 외부 문서가 나타나게 하거나 새창을 열어 새로운 브라우징할 수 있도록 처리할 수 있다.
<iframe src="http://www.example.com/test.html" sandbox="allow-top-navigation"></iframe>



| allow-form

원칙적으로 다른 도메인의 문서가 인라인 프레임을 통해 제공될 때는 폼 데이터를 다른 곳으로 보낼 수 없다. 이럴 때는 allow-forms 속성값을 이용하면 인라인 프레임에서 폼 데이터를 다른 곳으로 보낼 수 있다.
<iframe src="http://www.example.com/test.html" sandbox="allow-form"></iframe> 


| allow-scripts
원칙적으로 다른 도메인의 문서가 인라인 프레임을 통해 제공될 때는 스크립트 실행은 허용되지 않는다. 이럴 때는 allow-scripts 속성값을 이용하면 인라인 프레임에서 스크립트를 실행시킬 수 있다. 단 팝업창은 허용되지 않는다. 스크립트는 여러 가지 보안 상의 문제를 야기시킬 수 있기 때문에 신뢰할 수 있는 문서일 경우에만 허용해야 한다.
<iframe src="http://www.example.com/test.html" sandbox="allow-scripts"></iframe> 


출처  : http://webdir.tistory.com/312?category=607030

2018/02/08 15:23 2018/02/08 15:23
Posted
Filed under jQuery
| 클라이언트 
var formData = new FormData($("#frm")[0]);

$.ajax(
              {

                        url : "krMy_ExcelRead.asp" ,
                        type : "POST" ,
                        async : false ,
                        cache : false,
                        data : formData,
                        processData: false  // 데이터 문자열을 자동으로 쿼리스트링으로 변환되는것을 false
                        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                        dataType : "text",
                        timeout : 10000,
        
                        complete: function(jqXHR)
                        {

                                 alert("complete") 
                        },

                        success: function(jqXHR)  
                        {

                                alert("upload success"); 
                        } ,

                        error : function(jqXHR)   
                        {
                                alert("upload Error");
                        }
        

        }
);


| 서버 단 소스(classic ASP)
 서버단은 기존에 form 넘겨 받드시 그대로 작성하면된다. ajax라도 다를께 없다. (서버 코드는 본인의 상황에 맞게 알아서 코딩)
<%
        Response.Expires = 0
        Response.Buffer = True
        Server.ScriptTimeOut = 25 * 60 * 60

        filePath = Server.mapPath("../temp/") & "\"

        Set objFSO = CreateObject("Scripting.FileSystemObject") '파일시스템 개체 생성
        Set fForm = server.createobject("ABCUpload4.XForm")
        fForm.MaxUploadSize = 10240000 '최대업로드용량 '10메가(디폴트는 8메가)
        fForm.AbsolutePath = True
        fForm.Overwrite = true

        Set theField = fForm("file")(1)

        strFilePath = theField.RawFilePath '파일의 클라이언트 경로
        strFileName = Mid(strFilePath, InstrRev(strFilePath,"\") + 1) '경로명을 제외한 파일명 추출
        strStoreFileName = filePath & strFileName 

        theField.Save strStoreFileName

%>        
2018/02/01 19:13 2018/02/01 19:13