来自Amazon S3流包装器的PHP CURL PUT(tcp流)

时间:2017-03-08 19:49:29

标签: php curl amazon-s3 vimeo-api php-stream-wrappers

我试图(PHP)使用S3流包装器std::move(input)将文件从Amazon S3发送到Vimeo并获得以下错误:

  

curl_setopt_array():无法在[...]

中将tcp_socket / ssl类型的流表示为STDIO FILE

有没有办法cURL PUT远程文件?这是发送的卷曲选择:

(s3://...)

1 个答案:

答案 0 :(得分:1)

在删除之前将文件保存到本地服务器:

$file = tempnam(sys_get_temp_dir(), "foo");
$data = file_get_contents("s3://path-to-object");
$size = strlen($data);
file_put_contents($file, $data);
$curl_opts = array(
  CURLOPT_PUT => true,
  CURLOPT_INFILE => $file, // this refers to 's3://path-to-object'
  CURLOPT_INFILESIZE => $size,
  CURLOPT_UPLOAD => true,
  CURLOPT_HTTPHEADER => array('Expect: ', 'Content-Range: replaced...')
);