>

파일의 바이너리 데이터가있는 POST를 요청의 본문으로 보내려는 API를 사용하고 있습니다. PHP cURL을 사용하여이를 어떻게 수행 할 수 있습니까?

내가 이루고자하는 것과 같은 명령 행은 :

curl --request POST --data-binary "@myimage.jpg" https://myapiurl


  • 답변 # 1

    당신은 CURLOPT_POSTFIELDS 에 당신의 몸을 설정할 수 있습니다 .

    예 :

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            "http://url/url/url" );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_POST,           1 );
    curl_setopt($ch, CURLOPT_POSTFIELDS,     "body goes here" ); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: text/plain')); 
    $result=curl_exec ($ch);
    
    

    여기에서 가져옴

    물론, 자신의 헤더 유형을 설정하고 file_get_contents('/path/to/file') 를 수행하십시오.  몸을 위해.

  • 답변 # 2

    이것을 시도하십시오 :

    $postfields = array(
        'upload_file' => '@'.$tmpFile
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url.'/instances');
    curl_setopt($ch, CURLOPT_POST, 1 );
    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);//require php 5.6^
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $postResult = curl_exec($ch);
    if (curl_errno($ch)) {
        print curl_error($ch);
    }
    curl_close($ch);
    
    

  • 답변 # 3

    CURLFile 인스턴스를 통해 수행 할 수 있습니다 :

    $uploadFilePath = __DIR__ . '/resource/file.txt';
    if (!file_exists($uploadFilePath)) {
        throw new Exception('File not found: ' . $uploadFilePath);
    }
    $uploadFileMimeType = mime_content_type($uploadFilePath);
    $uploadFilePostKey = 'file';
    $uploadFile = new CURLFile(
        $uploadFilePath,
        $uploadFileMimeType,
        $uploadFilePostKey
    );
    $curlHandler = curl_init();
    curl_setopt_array($curlHandler, [
        CURLOPT_URL => 'https://postman-echo.com/post',
        CURLOPT_RETURNTRANSFER => true,
        /**
         * Specify POST method
         */
        CURLOPT_POST => true,
        /**
         * Specify array of form fields
         */
        CURLOPT_POSTFIELDS => [
            $uploadFilePostKey => $uploadFile,
        ],
    ]);
    $response = curl_exec($curlHandler);
    curl_close($curlHandler);
    echo($response);
    
    

    참조-https://github.com/andriichuk/php-curl-cookbook#upload-file

  • 답변 # 4

    이진 데이터와 함께 POST를 보내려면 적절한 헤더를 제공해야합니다.

    $header = array('Content-Type: multipart/form-data');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($resource, CURLOPT_POSTFIELDS, $arr_containing_file);
    
    

    $arr_include_file은 예를 들어 예상대로 파일을 포함 할 수 있습니다 (즉, API 서비스에서 적절한 예상 필드를 제공해야 함).

    $arr_containing_file = array('datafile' => '@inputfile.ext');
    
    

관련 자료

  • 이전 c# - 트 리뷰 업데이트가 포함 된 SQL 데이터 리더
  • 다음 jquery에서 materialize multiselect 선택된 값을 설정하는 방법