title: Curl PHP PUT request changes file content
body: <p>I use a PUT request with curl php in one of my scripts to upload a file to an external file repository using a REST API. However, the uploaded files contain information about the Content-Disposition, the Content-Type and some alpha-numeric code at both the beginning and the end of the file, rendering the useless unless manually enditing again.</p>
  
  <p>The unnecessary overhead looks like this:</p>
  
  <blockquote>
    <p>--------------------------e876c4b8eee91562 Content-Disposition: form-data; name="test_file"; filename="test_3.xlsx" Content-Type:
    application/octet-stream</p>
  </blockquote>
  
  <p>The code I use to do the request is:</p>
  
  <pre><code>  $ch = curl_init($upload_url);
    $cfile = new CURLFile($file_realpath, 'application/octet-stream', $base_file_name);
    $data = array ('test_file' =&gt; $cfile);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Accept:application/json',
      'Content-Type:application/octet-stream',
    ));
    b2share_ignore_certificates($ch);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
  
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $headerSent = curl_getinfo($ch, CURLINFO_HEADER_OUT);
  
    curl_close($ch);
  </code></pre>
  
  <p>I can't change the request to POST, as the REST API on the other side needs a PUT request. Any ideas on how to get rid of the overhead?</p>