파일 업로드 다루기
PHP Manual

PUT 방식 지원

PHP는 몇몇 클라이언트에서 서버에 파일을 저장하기 위해서 사용하는 HTTP PUT 방식을 지원합니다. PUT 요청은 POST 요청을 이용한 파일 업로드보다 단순하며, 다음과 같은 식으로 이루어집니다:

PUT /path/filename.html HTTP/1.1

일반적으로 원격 클라이언트가 웹 트리의 /path/filename.html에 내용을 저장하는걸 의미합니다. 아파치나 PHP가 웹 트리의 모든 파일에 누구나 자동적으로 덮어쓰게 하는 것은 좋은 생각이 아닙니다. 그래서, 웹 서버에 이러한 요청이 들어왔을때, PHP 스크립트를 통해서 다루도록 할 수 있습니다. 아파치에서는 Script 지시어를 통해 지정할 수 있습니다. 아파치 환경 설정 파일의 거의 모든 곳에서 지정할 수 있습니다. 일반적으로는 <Directory> 블록이나 <VirtualHost> 블록의 내부에 위치하게 됩니다. 다음 줄을 추가하면 됩니다:

Script PUT /put.php

이는 아파치가 이 줄이 들어가 있는 URI에 해당하는 모든 PUT 요청을 put.php 스크립트에 전달하게 합니다. 물론, .php 확장자에 대해 PHP를 사용할 수 있어야 합니다. 이 스크립트로 전해지는 모든 PUT 요청은 스크립트 자신이여야 하며, 업로드된 파일 이름이 존재해서는 안됩니다.

PHP로 put.php 안에 다음과 같은 일을 할 수 있습니다. 여기서는 업로드한 파일의 내용을 서버의 myputfile.ext으로 복사합니다. 이 파일 복사 전에 몇가지 확인을 하거나 사용자 인증을 할 수도 있습니다.

Example #1 HTTP PUT 파일 저장하기

<?php
/* PUT 데이터는 stdin 스트림으로 옵니다 */
$putdata fopen("php://input""r");

/* 파일 쓰기를 위해 열기 */
$fp fopen("myputfile.ext""w");

/* 한번에 1KB씩 읽어서 파일로 쓰기 */
while ($data fread($putdata1024))
  
fwrite($fp$data);

/* 스트림 닫기 */
fclose($fp);
fclose($putdata);
?>


파일 업로드 다루기
PHP Manual