다중 부분 양식 데이터: cURL을 사용하여 PHP에서 파일 문자열 보내기
많은 시나리오에서 개발자는 양식 데이터와 양식 데이터를 모두 제출해야 할 필요가 있을 수 있습니다. HTTP POST 요청을 사용하는 파일. 파일 시스템에 저장된 파일을 처리할 때 프로세스는 간단합니다. CURLOPT_POSTFIELDS에서 파일 경로 앞에 "@"을 추가하면 cURL이 파일 업로드를 처리할 수 있습니다.
그러나 질문이 생깁니다. 파일 생성 프로세스를 수행하고 cURL을 사용하여 파일 콘텐츠를 문자열로 직접 보내시겠습니까?
아래 솔루션에서 볼 수 있듯이 대답은 '예'입니다. 양식 데이터 본문을 수동으로 구성하고 적절한 헤더를 설정함으로써 웹 브라우저의 양식 제출 동작을 시뮬레이션할 수 있습니다.
<code class="php">// Form field separator $delimiter = '-------------' . uniqid(); // File upload fields: name => array(type => 'mime/type', content => 'raw data') $fileFields = array( 'file1' => array( 'type' => 'text/plain', 'content' => '...your raw file content goes here...' ), /* ... */ ); // Non-file upload fields: name => value $postFields = array( 'otherformfield' => 'content of otherformfield is this text', /* ... */ ); $data = ''; // Populate non-file fields first foreach ($postFields as $name => $content) { $data .= "--" . $delimiter . "\r\n"; $data .= 'Content-Disposition: form-data; name="' . $name . '"'; $data .= "\r\n\r\n"; } // Populate file fields foreach ($fileFields as $name => $file) { $data .= "--" . $delimiter . "\r\n"; $data .= 'Content-Disposition: form-data; name="' . $name . '";' . ' filename="' . $name . '"' . "\r\n"; $data .= 'Content-Type: ' . $file['type'] . "\r\n"; $data .= "\r\n"; $data .= $file['content'] . "\r\n"; } // Last delimiter $data .= "--" . $delimiter . "--\r\n"; $handle = curl_init($url); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_HTTPHEADER , array( 'Content-Type: multipart/form-data; boundary=' . $delimiter, 'Content-Length: ' . strlen($data))); curl_setopt($handle, CURLOPT_POSTFIELDS, $data); curl_exec($handle);</code>
이 단계를 따르면 파일 콘텐츠 문자열로 여러 부분으로 구성된 양식 데이터를 구성하고 제출할 수 있습니다. cURL을 사용하므로 임시 파일을 생성할 필요가 없습니다. 이 접근 방식을 통해 개발자는 PHP 애플리케이션 내에서 파일 업로드를 처리할 때 더 큰 제어력과 유연성을 얻을 수 있습니다.
위 내용은 임시 파일을 만들지 않고 cURL을 사용하여 파일 콘텐츠 문자열을 직접 보낼 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!