>  기사  >  백엔드 개발  >  PHP는 CURL을 통해 파일을 업로드합니다.

PHP는 CURL을 통해 파일을 업로드합니다.

PHP中文网
PHP中文网원래의
2017-02-10 14:20:342298검색

p>PHP는 CURL을 사용하여 파일을 업로드합니다. 요청의 필드를 업로드해야 하는 파일의 전체 경로로 설정하고("@"로 시작), CURL을 사용하여 POST를 수행합니다. 변수 메소드가 서버로 전송되고 해당 업로드된 파일 정보는 서버 측 슈퍼 전역 변수 $_FILES에서 얻을 수 있습니다.

<br>

아래에서는 이 프로세스를 예시로 보여줍니다.

<br>

로컬 텍스트 파일 log.txt가 있고 경로는 "/www/test/log.txt"이고 내용은 다음과 같다고 가정합니다.

this is a file for test
hello PythonTab!

이 파일을 서버 측 스크립트 http://www.pythontab.com/upload.php에 업로드하려면 다음 내용으로 컬_file.php라는 로컬 스크립트를 작성했습니다.

<php?
//要上传的本地文件地址
"upload" = > "@/www/test/log.txt"
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch , CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
 ?>

curl_file .php 논리는 매우 간단합니다. POST 변수 $post_data를 설정합니다. 여기서 업로드는 전송해야 하는 파일을 가리킵니다. 이전에 POST를 사용했을 때 문자열을 보낸 다음 서버 측에서 file_get_contents("php//input")를 사용하여 문자열을 얻었습니다. 이는 실제로 여기에서의 사용법과 다릅니다. GET과 같을 수도 있습니다. $_GET처럼 해당 POST 데이터의 값을 얻을 수 있는 슈퍼 전역 변수 $_POST가 서버 측에 있습니다. 주의할 점은 파일 업로드를 위한 변수는 $_POST에는 존재하지 않고 $_FILES에는 존재한다는 것입니다.

<br>

위 코드에서 파일 업로드 요청을 받는 서버의 로직을 보여주기 위해 upload.php에 다음 코드를 작성했습니다.

<br>

upload. PHP는 먼저 var_export를 사용하여 $_FILES 변수를 표준 출력으로 출력한 다음 file_get_contents를 사용하여 $_FILES['upload']['tmp_name']이 가리키는 파일의 내용을 읽고 이를 표준으로 출력합니다. 출력한 다음 $_FILES['upload'를 넣습니다. ]['tmp_name']이 가리키는 파일이 현재 디렉터리의 log_copy.txt 파일에 복사됩니다. 이 스크립트의 표준 출력은 다음과 같습니다.

array(
 &#39;upload&#39; =>
     array(
     &#39;name&#39; => &#39;log.txt&#39;,
     &#39;type&#39; => &#39;application/octet-stream&#39;,
     &#39;tmp_name&#39; => &#39;/tmp/phpLUB59F&#39;,
     &#39;error&#39; => 0,
     &#39;size&#39; => 36,
     )
 )
 this is a file for test
 hello PythonTab!

$_FILES 변수에 업로드된 파일 설명 정보에 해당하는 업로드 배열이 있음을 확인할 수 있습니다. 여기서 name과 type은 이름과 유형을 나타냅니다. 각기. tmp_name이 더 중요합니다. 서버는 업로드된 파일을 받은 후 임시 파일에 파일을 씁니다. 이 임시 파일의 이름은 tmp_name의 값입니다. 파일을 읽는 중입니다. 일반적으로 서버는 업로드된 파일을 받은 후 즉시 파일을 읽거나 파일을 다른 파일에 복사해야 합니다. 왜냐하면 tmp_name이 가리키는 임시 파일은 서버 스크립트가 실행된 후 삭제되기 때문입니다. 줄은 임시 파일을 대상 파일에 복사하는 것입니다.

<br>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.