> 백엔드 개발 > PHP 튜토리얼 > 임시 파일을 만들지 않고 cURL을 사용하여 파일 콘텐츠 문자열을 직접 보낼 수 있습니까?

임시 파일을 만들지 않고 cURL을 사용하여 파일 콘텐츠 문자열을 직접 보낼 수 있습니까?

Susan Sarandon
풀어 주다: 2024-10-17 18:32:02
원래의
1102명이 탐색했습니다.

Can You Send File Content Strings Directly Using cURL Without Creating Temporary Files?

다중 부분 양식 데이터: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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