3

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

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

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

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

4 ответа4

6

Вы могли бы:

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

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

$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg"
$ ssh user@remote-host 'wget $URL'

--2011-02-05 11:15:10--  http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg
Resolving upload.wikimedia.org... 91.198.174.234
Connecting to upload.wikimedia.org|91.198.174.234|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 576216 (563K) [image/jpeg]
Saving to: `Red_Apple.jpg'

     0K .......... .......... .......... .......... ..........  8%  327K 2s
    50K .......... .......... .......... .......... .......... 17%  668K 1s
   100K .......... .......... .......... .......... .......... 26% 1.23M 1s
   150K .......... .......... .......... .......... .......... 35% 1.23M 1s
   200K .......... .......... .......... .......... .......... 44%  697K 0s
   250K .......... .......... .......... .......... .......... 53% 1.15M 0s
   300K .......... .......... .......... .......... .......... 62%  707K 0s
   350K .......... .......... .......... .......... .......... 71% 1.13M 0s
   400K .......... .......... .......... .......... .......... 79%  713K 0s
   450K .......... .......... .......... .......... .......... 88% 1.13M 0s
   500K .......... .......... .......... .......... .......... 97%  702K 0s
   550K .......... ..                                         100% 3.13M=0.7s

2011-02-05 11:15:11 (777 KB/s) - `Red_Apple.jpg' saved [576216/576216]

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

1

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

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

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

1

Создайте папку с именем "загрузки" на целевом сервере. Сохраните этот код в файл .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> 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .