CURL PHP PUT请求更改文件内容

本教程将介绍CURL PHP PUT请求更改文件内容的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

CURL PHP PUT请求更改文件内容 教程 第1张

问题描述

我在我的一个脚本中使用了带有curl php的PUT请求,通过REST API将文件上传到外部文件存储库。但是,上载的文件在文件的开头和结尾都包含有关Content-Disposal、Content-Type和一些字母数字代码的信息,除非再次手动结束,否则将使文件毫无用处。

不必要的开销如下:

-e876c4b8eee91562内容配置:表单数据;名称="test_file";文件名="test_3.xlsx"内容类型:
应用程序/八位字节流

我用来做请求的代码是:

  $ch = curl_init($upload_url);
  $cfile = new CURLFile($file_realpath, 'application/octet-stream', $base_file_name);
  $data = array ('test_file' => $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);

我不能将请求更改为POST,因为另一端的rest API需要PUT请求。有什么办法摆脱管理费用吗?

推荐答案

正常。我在这里找到了这个问题的答案:
PHP Curl post a file without header

因此更改行

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

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

修复了该问题。这可能不是一个非常"干净"的解决方案,但它是有效的。不过,我很高兴听到更好的解决方案。

好了关于CURL PHP PUT请求更改文件内容的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。