PHP는 CURL을 통해 파일을 업로드하는 기능을 구현합니다.

不言
풀어 주다: 2023-03-28 18:28:02
원래의
1967명이 탐색했습니다.

이 글은 주로 PHP에서 CURL을 통해 파일을 업로드하는 기능을 소개하고, 컬 파일 업로드 동작을 활용하여 PHP의 관련 속성 설정과 활용 스킬을 분석한 내용을 필요한 친구들이 참고할 수 있습니다

이 예시는 다음과 같습니다. 기사에서는 PHP 파일 기능에서 CURL을 통한 업로드 구현에 대해 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

PHP는 CURL을 사용하여 파일을 업로드하고, POST 요청을 보내고, 요청의 특정 필드를 업로드해야 하는 파일의 전체 경로로 설정합니다. "@"으로 시작하고 CURL을 사용하여 이 변수를 POST 모드로 서버에 전송하면 해당 업로드된 파일 정보는 서버 측 슈퍼 전역 변수 $_FILES에서 얻을 수 있습니다.

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

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

this is a file for test
hello PythonTab!
로그인 후 복사

이 파일을 서버에 업로드하려면 -사이드 스크립트 http://www .php.cn/article.html, 우리는 다음 내용으로 컬_file.php라는 로컬 스크립트를 작성했습니다:

<?php
$url = "http://www.php.cn/article.html";
$post_data = array(
"foo" => "bar",
//要上传的本地文件地址
"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< /code>, 여기서 업로드는 전송해야 하는 파일을 가리킵니다. 이전에 POST를 사용할 때는 문자열을 보낸 다음 서버 측에서 <code>file_get_contents("php//input")를 사용하여 문자열을 가져왔다는 점에 유의해야 합니다. 실제로 POST는 GET과 같은 키-값 쌍을 보낼 수도 있습니다. $_GET처럼 해당 POST 데이터의 값을 얻을 수 있는 슈퍼 전역 변수 $_POST가 서버측에 있습니다. 주의할 점은 파일 업로드를 위한 변수는 $_POST에는 존재하지 않고 $_FILES에는 존재한다는 것입니다. $post_data,其中upload指向需要发送的文件。这里要注意,我们之前使用POST都是发送一个字符串,然后在服务器端使用file_get_contents("php//input")来获取该字符串,和这里的用法不一样,其实POST也可以像GET一样,发送键值对。在服务端有一个超级全局变量$_POST可以像$_GET一样,获取相应的POST数据的值。需要注意的是,上传文件的变量不是存在着$_POST中,而是在$_FILES中。

为了展示服务端收到上述代码的文件上传请求的逻辑,我们在upload.php中写了以下代码:

<?php
echo var_export($_FILES,true);
echo file_get_contents($_FILES[&#39;upload&#39;][&#39;tmp_name&#39;]);
copy($_FILES[&#39;upload&#39;][&#39;tmp_name&#39;], "./log_copy.txt");
?>
로그인 후 복사

upload.php首先使用var_export$_FILES变量输出到标准输出,然后使用file_get_contents读取$_FILES[&#39;upload&#39;][&#39;tmp_name&#39;]所指文件的内容,并输出到标准输出,然后把$_FILES[&#39;upload&#39;][&#39;tmp_name&#39;]

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

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!
로그인 후 복사

upload.php는 먼저 var_export를 사용합니다. >에서 $_FILES 변수는 표준 출력으로 출력한 다음 file_get_contents를 사용하여 $_FILES['upload'][가 가리키는 파일의 내용을 읽습니다. 'tmp_name'] , 표준 출력으로 출력한 다음 $_FILES['upload']['tmp_name']이 가리키는 파일을 log_copy.txt 파일에 복사합니다. 현재 디렉토리에 있습니다. 스크립트의 표준 출력은 다음과 같습니다. rrreee $_FILES 변수에 업로드된 파일 설명 정보에 해당하는 업로드 배열이 있는 것을 확인할 수 있습니다. 여기서 name과 type은 각각 이름과 유형을 나타냅니다. tmp_name이 더 중요합니다. 서버는 업로드된 파일을 받은 후 임시 파일에 파일을 씁니다. 이 임시 파일의 이름은 tmp_name의 값입니다. 파일을 읽는 중입니다. 일반적으로 서버는 업로드된 파일을 받은 후 즉시 파일을 읽거나 파일을 다른 파일에 복사해야 합니다. 왜냐하면 tmp_name이 가리키는 임시 파일은 서버 스크립트가 실행된 후 삭제되기 때문입니다. 줄은 임시 파일을 대상 파일에 복사하는 것입니다.

관련 권장 사항:

php는 비누를 통해 .Net의 WebService asmx 파일을 호출하는 방법을 구현합니다.

PHP는 strace

🎜🎜🎜🎜🎜🎜를 통해 오류의 원인을 찾는 방법을 구현합니다. 🎜

위 내용은 PHP는 CURL을 통해 파일을 업로드하는 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿