PHP CURL PUT из потоковой обертки Amazon S3 (tcp stream)

Я пытаюсь (PHP) CURL PUT файл из Amazon S3 в Vimeo, используя потоковую оболочку S3 (s3://...) и получить следующую ошибку:

curl_setopt_array (): не может представлять поток типа tcp_socket/ssl как ФАЙЛ STDIO в [...]

Есть ли способ отменить удаленный файл? Это отправка опций:

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

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...')
);
Другие вопросы по тегам