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에는 존재한다는 것입니다.
위 코드에서 파일 업로드 요청을 받는 서버의 로직을 보여주기 위해 upload.php에 다음 코드를 작성했습니다.
<br>
upload. PHP는 먼저 var_export를 사용하여 $_FILES 변수를 표준 출력으로 출력한 다음 file_get_contents를 사용하여 $_FILES['upload']['tmp_name']이 가리키는 파일의 내용을 읽고 이를 표준으로 출력합니다. 출력한 다음 $_FILES['upload'를 넣습니다. ]['tmp_name']이 가리키는 파일이 현재 디렉터리의 log_copy.txt 파일에 복사됩니다. 이 스크립트의 표준 출력은 다음과 같습니다.
array( 'upload' => array( 'name' => 'log.txt', 'type' => 'application/octet-stream', 'tmp_name' => '/tmp/phpLUB59F', 'error' => 0, 'size' => 36, ) ) this is a file for test hello PythonTab!
$_FILES 변수에 업로드된 파일 설명 정보에 해당하는 업로드 배열이 있음을 확인할 수 있습니다. 여기서 name과 type은 이름과 유형을 나타냅니다. 각기. tmp_name이 더 중요합니다. 서버는 업로드된 파일을 받은 후 임시 파일에 파일을 씁니다. 이 임시 파일의 이름은 tmp_name의 값입니다. 파일을 읽는 중입니다. 일반적으로 서버는 업로드된 파일을 받은 후 즉시 파일을 읽거나 파일을 다른 파일에 복사해야 합니다. 왜냐하면 tmp_name이 가리키는 임시 파일은 서버 스크립트가 실행된 후 삭제되기 때문입니다. 줄은 임시 파일을 대상 파일에 복사하는 것입니다.
<br>