在 Web 开发中,与表单数据一起传输文件是常见的需求。虽然 cURL 提供了一种从文件系统 POST 文件的简单方法,但本文探讨了一种直接将文件作为字符串 POST 的技术,从而绕过了创建临时文件的需要。
关键在于手动构造multipart/form-data请求体。首先将表单字段与文件上传分开。对于每个非文件字段,创建一个包含字段名称和值的表单数据部分。
接下来,对于要上传的每个文件,创建一个包含文件名、mime 类型和值的表单数据部分实际文件内容。
要模拟类似浏览器的 POST,请设置适当的标头:
<code class="php">'Content-Type: multipart/form-data; boundary=' . $delimiter 'Content-Length: ' . strlen($data)</code>
其中 $delimiter 是分隔每个标头的唯一字符串
<code class="php">$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>
通过构造 multipart/form-data 正文并设置必要的标头,cURL 可以无缝 POST 表示为字符串的文件,与使用物理文件相比,提供更灵活、更高效的方法。
以上是如何在 PHP 中使用 cURL 发布文件字符串:分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!