Как загрузить файл непосредственно на веб-сервер?

Как загрузить файл непосредственно на веб-сервер?

Я хотел бы загружать файлы непосредственно на размещенный сервер, будь то тот, который я настроил самостоятельно, или размещенный сервис, такой как Dropbox.

Например, когда я скачиваю подкаст, вместо того, чтобы загрузить его на свой компьютер, а затем загрузить на сервер, как я могу загрузить его напрямую в облако? Мой интерес здесь заключается в уменьшении трафика, который я использую по тарифному плану на моем ноутбуке, поэтому я не хочу, чтобы мой компьютер выступал в качестве физического посредника, кэширующего файл.

В идеале, было бы как-то сделать ссылку на скачивание и указать, чтобы она шла прямо на мой сервер. Как мне это сделать?

Я понимаю, что этот вопрос потенциально касается "веб-приложения" и потенциально касается "администрирования сервера", и поскольку моя цель — вывести свой компьютер из цикла, я вижу, как люди говорят, что это не по теме и должно быть на другом сайте. Моя проблема заключается в следующем: я не знаю, будет ли это решением веб-приложения или серверным решением, но я знаю, что в любом случае я буду использовать компьютер, чтобы сделать это, и я заменяю функцию, которая в настоящее время выполняется на моем компьютере, поэтому я решил спросить об этом здесь. Если я ошибаюсь и это определенно должно быть в веб-приложениях, не стесняйтесь сообщить мне или просто перенесите это.

решение1

Вы могли бы:

  • Подключитесь к серверу по VNC, запустите браузер и скачайте файл.
  • SSH-подключение к серверу и выполнение по сути того же самого, но с использованием CLI (curl? wget?). Можно использовать SSH для выполнения удаленной команды; см.ответ ulidtko на пример этого.
  • Создайте приложение на сервере, которое может ставить в очередь URL-адреса загрузок файлов (веб-сервис?). Оно может опрашивать очередь, загружая каждый файл, пока очередь не опустеет.

решение2

С CLI это невероятно просто.

$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg"
$ ssh пользователь@удалённый-хост 'wget $URL'

--2011-02-05 11:15:10-- http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg
Разрешение upload.wikimedia.org... 91.198.174.234
Подключение к upload.wikimedia.org|91.198.174.234|:80... подключено.
HTTP-запрос отправлен, ожидание ответа... 200 OK
Длина: 576216 (563K) [image/jpeg]
Сохранение в: `Red_Apple.jpg'

     0К .......... .......... .......... .......... .......... 8% 327К 2с
    50К .......... .......... .......... .......... .......... 17% 668К 1с
   100 тыс. .......... .......... .......... .......... .......... 26% 1,23 млн 1с
   150 тыс. .......... .......... .......... .......... .......... 35% 1,23 млн 1с
   200К .......... .......... .......... .......... .......... 44% 697К 0с
   250К .......... .......... .......... .......... .......... 53% 1,15 млн. нулей
   300К .......... .......... .......... .......... .......... 62% 707К 0с
   350К .......... .......... .......... .......... .......... 71% 1,13 млн. нулей
   400К .......... .......... .......... .......... .......... 79% 713К 0с
   450К .......... .......... .......... .......... .......... 88% 1,13 млн. нулей
   500К .......... .......... .......... .......... .......... 97% 702К 0с
   550К .......... .. 100% 3.13M=0.7с

2011-02-05 11:15:11 (777 КБ/с) - `Red_Apple.jpg' сохранен [576216/576216]

Здесь мы используем два важных инструмента:сшиwget. Большая часть вывода wget— но это вывод запущенного экземпляра wgetна удаленной машине; файл сохраняется в userдомашнем каталоге пользователя remote-host.

решение3

теперь это будет зависеть от того, используете ли вы общий хостинг или что-то с гораздо большей свободой. Если это первое, то это должно быть уродливым cludge.

Если бы у вас был VPS или какой-либо другой хостинг с фактически собственной системой, вы могли бы настроить то, что вам нужно — например, торрент-клиент, что-то вродеtorrentfluxесли вам нужен полный доступ и/или вышеупомянутый метод клиента ssh/cli (хотя, если вам станет совсем скучно, комбинация dropbox для загрузки ссылок на сервер в сочетании с умным скриптом cron будет замечательным оскорбительным способом сообщить системе, какие файлы открывать/загружать с помощью чего).

Вы даже можете периодически сжимать загруженный файл в куски для загрузки, чтобы еще больше сэкономить трафик.

решение4

Создайте папку с названием "downloads" на целевом сервере. Сохраните этот код в .phpфайл и запустите на целевом сервере:

<html>
<form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
<?php

// maximum execution time in seconds
set_time_limit (24 * 60 * 60);

if (!isset($_POST['submit'])) die();


// folder to save downloaded files to. must end with slash
$destination_folder = 'downloads/';

$url = $_POST['url'];
$newfname = $destination_folder . basename($url);

$file = fopen ($url, "rb");
if ($file) {
  $newf = fopen ($newfname, "wb");

  if ($newf)
  while(!feof($file)) {
    fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
  }
}

if ($file) {
  fclose($file);
}

if ($newf) {
  fclose($newf);
}

?>
</html> 

Связанный контент