【问题标题】:PHP Curl post a file without headerPHP Curl 发布一个没有标题的文件
【发布时间】:2017-06-08 12:19:31
【问题描述】:

我不是一个 PHP 人,但我试图将一个 cli CURL 调用移植到 PHP ... 最初我有:

curl -i -H "Content-Type: text/csv" -X POST --data-binary @$filepath $destination

我试着把它变成:

<?php
$data['Filedata'] = "@".$filepath;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $destination.'/_');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/csv"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch); 
curl_close($ch);
?>

问题是这会导致额外的标头被附加到目的地,包含------------------------------6614b0cf8aae Content-Disposition: form-data; name=Filedata; filename=$filepath Content-Type: application/octet-stream.

我认为这是因为我使用 $data['Filedata'] 的方式,所以我尝试将 CURLOPT_POSTFIELDS 行替换为下面的行,但这最终只会发布路径字符串而不是文件本身。

curl_setopt($ch, CURLOPT_POSTFIELDS, "@".$filepath);

有人介意指出我缺少什么吗?就像我说的,不是 PHP 人!

【问题讨论】:

  • 你试过 curl_setopt($ch, CURLOPT_HEADER, 0); ?

标签: php curl


【解决方案1】:

直接加载文件内容即可。目前,您正在执行与原始 curl 命令行不同的键/值解析 POST 数据。

curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($filepath));

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    相关资源
    最近更新 更多