1

我正在尝试(PHP)使用 S3 流包装器将文件从 Amazon S3 卷曲到 Vimeo(s3://...)并收到以下错误:

curl_setopt_array():不能将 tcp_socket/ssl 类型的流表示为 [...] 中的 STDIO 文件

有没有办法卷曲 PUT 远程文件?这是正在发送的 curl 选项:

$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...')
);
4

1 回答 1

1

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

$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...')
);
于 2017-03-08T20:29:06.707 回答