Как загрузить файлы непосредственно на Amazon S3 с удаленного сервера?
Можно ли загрузить файл на S3 с удаленного сервера?
Удаленный сервер - это, в основном, файловый сервер на основе URL. Например, используя http://example.com/1.jpg, он служит для изображения. Он ничего не делает и не может запускать код на этом сервере.
Возможно, другой сервер сообщает S3 о загрузке файла из http://example.com/1.jpg
upload from http://example.com/1.jpg
server -------------------------------------------> S3 <-----> example.com
Ответы
Ответ 1
Если вы не можете запускать код на сервере или выполнять запросы, тогда нет, вы не можете этого сделать. Вам придется загрузить файл на сервер или компьютер, который у вас есть, и загрузить оттуда.
Вы можете увидеть операции, которые вы можете выполнить на amazon S3, в http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html
Проверяя операции как для API REST, так и для SOAP, вы не увидите, чтобы дать Amazon S3 удаленный URL-адрес и захватить объект для вас. Все запросы PUT требуют, чтобы данные объекта были предоставлены как часть запроса. Значение сервера или компьютера, инициирующего веб-запрос, должно иметь данные.
У меня была аналогичная проблема в прошлом, когда я хотел загрузить миниатюры Facebook для пользователей и загружать их на S3 для использования на моем сайте. То, как я это делал, это загрузить изображение из Facebook в память на моем сервере, а затем загрузить на Amazon S3 - полная занятость заняла менее 2 секунд. После того, как загрузка на S3 завершена, напишите ведро/ключ в базу данных.
К сожалению, нет другого способа сделать это.
Ответ 2
Я думаю, что предлагаемое предложение неплохо, вы можете SCP файл в S3 Bucket. Предоставление файла pem будет менее аутентифицированным с помощью пароля, через PHP файл вы можете проверить расширения. Файл PHP может передать файл в качестве аргумента команде SCP.
Единственная проблема с этим решением - вы должны иметь свой экземпляр в AWS. Вы не можете использовать это решение, если ваш сайт размещен в других хостинг-провайдерах, и вы пытаетесь загрузить файлы прямо в ведро S3.
Ответ 3
Технически это возможно, с использованием AWS Signature Version 4, Предполагая, что ваш remote server
является клиентом на изображении ниже, вы можете подготовить формы на главном сервере и отправьте поля формы на удаленный сервер, чтобы он был curl
. Подробный пример здесь.
![Amazon S3 upload using a POST request]()
Ответ 4
вы можете использовать команду scp из терминала.
1), используя терминал, перейдите к месту, где есть файл, который вы хотите перенести на сервер
2) введите это:
scp -i yourAmazonKeypairPath.pem fileNameThatYouWantToTransfer.php [email protected]st-2.compute.amazonaws.com:
N.B. Добавьте "ec2-user @" перед своими продуктами ec2blablbla, которые вы получили с сайта Ec2! Это такая придирчивая ошибка!
3) ваш файл будет загружен и будет показан прогресс. Когда это будет 100%, вы закончите!