如何在不使用 PHP 将文件写入磁盘的情况下将文件发布到 REST 服务器?

Posted

技术标签:

【中文标题】如何在不使用 PHP 将文件写入磁盘的情况下将文件发布到 REST 服务器?【英文标题】:How can I POST a file to a REST server without writing the file to disk with PHP? 【发布时间】:2010-11-01 07:22:24 【问题描述】:

我正在尝试将 XML 文件作为内部 API 的 POST 方法的一部分发送到服务器。

所有 php 文档都指向使用 $postVars['file']='@/path/to/file.xml' 来实际发送文件。

我想从字符串发送文件,但仍需要作为文件上传发送,而不是字符串。

帮助?

【问题讨论】:

【参考方案1】:

http://www.sematopia.com/?p=153 和 http://www.daniweb.com/forums/thread150772.html 可能会有所帮助。

【讨论】:

【参考方案2】:

看看这个线程,它处理我认为你想做的事情:http://www.webmasterworld.com/php/3164561.htm

最后一个条目可能会有所帮助(由我重新格式化):

function do_post_request($url, $data, $optional_headers = null)  
  $params = array('http' => array( 
    'method' => 'post', 
    'content' => $data 
  )); 

  if ($optional_headers!== null) 
    $params['http']['header'] = $optional_headers; 

  $ctx = stream_context_create($params); 
  $fp = @fopen($url, 'rb', false, $ctx); 
  if (!$fp)
    throw new Exception("Problem with $url, $php_errormsg"); 

  $response = @stream_get_contents($fp); 
  if ($response === false) 
    throw new Exception("Problem reading data from $url, $php_errormsg"); 

  return $response; 

基本上解决方案是利用内置的 php 流处理 url。

【讨论】:

优秀。我会研究这个解决方案。

以上是关于如何在不使用 PHP 将文件写入磁盘的情况下将文件发布到 REST 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不写入磁盘的情况下将 AWS S3 上的文本文件导入 pandas

如何在不知道编码的情况下将字节写入 Python 3 中的文件?

如何在不复制列标签的情况下将多个数据框写入同一张表

如何在不使用 BIOS 的情况下将数据写入显卡?

Python 3:如何在不保存在磁盘上的情况下将 pandas 数据帧作为 csv 流上传?

是否可以在不重写的情况下将数据添加到文件中?