2016-12-08 2 views
0

Когда пользователь нажимает на ссылку на сайте, я пытаюсь загрузить файл из корзины Amazon S3 с подписанным URL-адресом через php. Вот что я до сих пор:Как загрузить файл с подписанного URL из Amazon S3 на клиентскую машину с использованием PHP?

$client = S3Client::factory(
    array(
     'key' => 'xyz', 
     'secret' => 'abc' 
)); 

$signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes'); 

Теперь, как загрузить файл, используя указанный выше URL-адрес на клиентскую машину?

+0

Вы пытались использовать 'file_get_contents' и передавали URL-адрес? – georoot

+0

Да, я попробовал это и readfile() – Rumi

ответ

0

Предполагая, что у вас возникли проблемы только в выборке в url и реализовали апи должным образом, это должно работать

$client = S3Client::factory(
    array(
     'key' => 'xyz', 
     'secret' => 'abc' 
)); 

$signedUrl = $client->getObjectUrl(<bucket>, $location, '+10 minutes'); 
file_put_contents($fileName, file_get_contents($signedUrl)); 

Теперь это помещает файл на сервере. Чтобы загрузить клиент, существует несколько методов. Позвольте мне попытаться с самыми простыми

header('Content-Type: application/csv'); // Change mime type 
header('Content-Disposition: attachment; filename=temp.csv'); // Change filename 
header('Pragma: no-cache'); 
echo (file_get_contents($signedUrl)); 

Это скорее, чем сохранение на сервере, служит для вывода на клиентский счет. Другой альтернативой будет отправка URL-адреса на javascript и загрузка с клиентской стороны.

+0

Я не хочу загружать файл на сервер вместо этого на клиентскую машину через браузер. – Rumi

+0

@ Rumi позвольте мне добавить эту часть также – georoot

+0

@Rumi дайте мне знать, если это поможет или вам нужно что-то еще :) – georoot

Смежные вопросы