영어로 읽기

다음을 통해 공유


파일

IIS 관리 API는 파일 시스템과 직접 상호 작용하는 파일 API 집합을 제공합니다. 즉, API를 로컬 또는 원격으로 사용하여 콘텐츠를 배포하거나, 편집하거나, 파일이 최신 상태인 경우 검사 수 있습니다.

일반 파일(/api/files)

/api/files 엔드포인트는 컴퓨터의 파일 및 디렉터리 메타데이터와 콘텐츠를 노출합니다. 이 API를 통해 사용할 수 있는 파일은 appsettings.json파일의 파일 구성 섹션에 지정된 파일로 제한됩니다. 디렉터리를 지정하지 않고 /api/files 엔드포인트를 쿼리하면 구성에 있는 위치가 나열됩니다. 이러한 위치는 API를 통해 사용할 수 있는 모든 파일 시스템 경로의 루트를 나타냅니다. 파일 경로에 작업을 수행하는 데 필요한 클레임이 있는 한 표준 HTTP 게시물, 삭제 및 패치 동사를 사용하여 파일을 만들고, 삭제하고, 조작할 수 있습니다.

예제

파일

{
    "name": "iisstart.png",
    "id": "{id}",
    "type": "file",
    "physical_path": "C:\\inetpub\\wwwroot\\iisstart.png",
    "exists": "true",
    "size": "98757",
    "created": "2017-01-09T18:08:33.5130112Z",
    "last_modified": "2017-01-09T17:48:13.6180477Z",
    "last_access": "2017-01-09T17:48:13.6180477Z",
    "e_tag": "1d26aa08c67ed45",
    "parent": {
        "name": "wwwroot",
        "id": "{id}",
        "type": "directory",
        "physical_path": "C:\\inetpub\\wwwroot"
    },
    "claims": [
        "read",
        "write"
    ]
}

디렉터리

{
    "name": "wwwroot",
    "id": "{id}",
    "type": "directory",
    "physical_path": "C:\\inetpub\\wwwroot",
    "exists": "true",
    "created": "2017-01-09T18:08:33.1380257Z",
    "last_modified": "2017-01-30T17:01:15.2619212Z",
    "last_access": "2017-01-30T17:01:15.2619212Z",
    "total_files": "7",
    "parent": {
        "name": "inetpub",
        "id": "a-nA1LZCBZ9jIqxr6e2uWg",
        "type": "directory",
        "physical_path": "C:\\inetpub"
    },
    "claims": [
        "read",
        "write"
    ]
}

웹 서버 파일(/api/webserver/files)

/api/webserver/files 엔드포인트는 IIS에서 만든 가상 파일 구조를 노출합니다. 이 엔드포인트 아래의 모든 파일 리소스는 일부 웹 사이트에 속하며 해당 파일의 경로는 해당 웹 사이트가 속한 웹 사이트를 기준으로 합니다. 이렇게 하면 웹 사이트를 파일 시스템 루트로 처리할 수 있으며 이는 웹 서버 시나리오에서 바람직합니다. 웹 사이트의 가상 파일 계층 구조를 완전히 보기 위해 가상 디렉터리가 일반 디렉터리에 포함됩니다.

모든 웹 서버 파일에는 /api/files 엔드포인트에서 가져올 수 있는 파일 메타데이터인 file_info 대한 참조가 있습니다.

예제

웹 파일

{
    "name": "iisstart.png",
    "id": "{id}",
    "type": "file",
    "path": "/iisstart.png",
    "parent": {
        "name": "",
        "id": "{id}",
        "type": "application",
        "path": "/"
    },
    "website": {
        "name": "Default Web Site",
        "id": "{id}",
        "status": "started"
    },
    "file_info": {
        "name": "iisstart.png",
        "id": "{id}",
        "type": "file",
        "physical_path": "C:\\inetpub\\wwwroot\\iisstart.png"
    }
}

웹 디렉터리

{
    "name": "imgs",
    "id": "{id}",
    "type": "directory",
    "path": "/imgs",
    "parent": {
        "name": "",
        "id": "{id}",
        "type": "application",
        "path": "/"
    },
    "website": {
        "name": "Default Web Site",
        "id": "{id}",
        "status": "started"
    },
    "file_info": {
        "name": "imgs",
        "id": "{id}",
        "type": "directory",
        "physical_path": "C:\\inetpub\\wwwroot\\imgs"
    }
}

파일 복사/이동(/api/files/copy | /api/files/move)

API는 /api/files/copy 및 /api/files/ move 엔드포인트 를 통해 파일 복사 및 이동을 지원합니다. 파일을 복사하는 프로세스는 원하는 복사 작업을 설명하는 API에 대한 POST 요청을 실행하여 수행됩니다.

POST

{
  "name":"{optional name of the destination file}",
  "file": {
    "id": "{id property of the file to copy}"
  },
  "parent": {
    "id": "{id property of the directory to copy to}"
  }
}

파일 콘텐츠 조작(/api/files/content)

/api/files 경로 아래의 리소스에는 파일에 대한 메타데이터만 포함됩니다. 파일의 콘텐츠를 조작하려면 /api/files/content/{id} 경로를 사용해야 합니다. 이 경로는 애플리케이션/옥텟 스트림 콘텐츠 형식을 사용하여 데이터를 전송합니다. 파일의 콘텐츠 URL에 대한 GET 요청을 수행하면 파일의 원시 바이트가 다시 처리됩니다. 이 작업은 HTTP 범위 요청을 지원하므로 파일을 청크로 다운로드할 수 있습니다. 파일의 콘텐츠 URL에 PUT 요청을 수행하면 파일의 콘텐츠가 요청 본문으로 바뀝니다. 이 작업은 파일의 임의 액세스 조작을 사용하도록 HTTP 콘텐츠 범위 요청을 지원합니다.

파일의 2번째 500바이트 다운로드

    GET /api/files/content/{id}
    Access-Token: Bearer {Access-Token}
    Range: bytes=500-999

1000바이트 파일의 2번째 500바이트 편집

    PUT /api/files/content/{id}
    Access-Token: Bearer {Access-Token}
    Content-Range: bytes 500-999/1000
    Content-Length: 500

파일 다운로드(/api/files/download)

파일은 API의 /api/files/content 엔드포인트를 통해 다운로드할 수 있습니다. 이 엔드포인트의 단점은 API 경로 아래에 있으므로 액세스 토큰이 필요하다는 것입니다. 즉, 브라우저를 통해 파일을 다운로드할 수 없습니다. /api/files/download 엔드포인트를 사용하면 임시 다운로드 링크를 만들 수 있습니다. 이러한 다운로드 링크는 고유하고 임의로 생성되며 액세스 토큰이 필요하지 않습니다. 생성된 다운로드 링크는 /downloads/{random_sequence}의 형식을 사용합니다. 다운로드 링크를 생성할 때 선택적 ttl(Time to Live) 매개 변수를 사용하여 다운로드 링크를 사용할 수 있는 기간을 지정할 수 있습니다. 기본값은 5초입니다.

다운로드가 생성되면 다운로드 링크가 HTTP 응답의 위치 헤더에 반환됩니다.

POST

{
    "file": {
        "id": "{id of the file to download}"
    },
    "ttl": "10000"
}

파일 공유 사용

파일 API를 사용하여 파일 공유에 있는 파일을 관리할 수 있습니다. 이 기능을 사용하려면 파일 공유에서 API가 실행 중인 컴퓨터를 나타내는 보안 주체에 필요한 파일 시스템 권한을 허용해야 합니다. 예를 들어 \\share\images 에 공유 콘텐츠가 있으며 web-prod-1 이라는 웹 서버에서 실행되는 API가 이러한 파일을 열거하도록 허용하려고 합니다. 이를 허용하려면 관리자가 web-prod-1 Active Directory 개체에 대한 READ 액세스를 허용하도록 \\share\images 디렉터리의 ACL을 수정해야 합니다. 이 작업이 완료되면 web-prod-1 컴퓨터의 서비스가 이 디렉터리에 액세스하고 파일을 읽은 다음 API를 통해 노출할 수 있습니다.

위치 - 파일 API 루트(/api/files/locations)

API의 파일 시스템 액세스는 appsettings 파일에 지정된 위치라는 루트 폴더 집합으로 제한됩니다. 이러한 위치는 파일 API의 관점에서 루트로 표시되지만 실제 드라이브에서는 중첩 폴더, 드라이브의 루트 또는 네트워크 공유일 수 있습니다. 각 위치에 대해 읽기 및 쓰기 액세스는 독립적으로 제어됩니다. 위치에 속하지 않는 파일 시스템의 경로는 파일 시스템 API에서 볼 수 없습니다.

버전 2.2.0부터 /api/files/locations 엔드포인트를 통해 위치 설정에 액세스할 수 있습니다. 이 엔드포인트는 API의 소유자 사용자 그룹에 있는 사용자에게 잠겨 있습니다. 즉, 위치 엔드포인트에 액세스하려면 Windows 인증이 필요합니다. 위치를 추가하거나 제거하면 API에서 파일 시스템 액세스가 추가되거나 제거됩니다. 이 엔드포인트는 기존 위치를 만들고, 편집하고, 삭제하기 위해 GET, PATCH, POST 및 DELETE를 지원합니다. 위치 편집은 물리적 파일에 영향을 주지 않으며 파일 시스템의 API 보기만 조작합니다.

기본 위치 구성

{
    "locations": [
        {
            "alias": "inetpub",
            "id": "{id}",
            "path": "C:\\inetpub",
            "claims": [
                "read"
            ]
        }
    ]
}