Como posso baixar um arquivo diretamente para um servidor web?

Como posso baixar um arquivo diretamente para um servidor web?

Gostaria de baixar arquivos diretamente para um servidor hospedado, seja um que eu mesmo configurei ou um serviço hospedado como o Dropbox.

Por exemplo, quando faço o download de um podcast, em vez de baixá-lo para o meu computador e depois enviá-lo para o servidor, como posso fazer o download diretamente para a nuvem? Meu interesse aqui é reduzir o tráfego que estou usando em um plano de dados medido em meu laptop, por isso não quero que meu computador atue como um intermediário físico armazenando o arquivo em cache.

Idealmente, haveria alguma maneira de eu ter um link de download e solicitar que ele fosse diretamente para o meu servidor. Como posso fazer isso?

Eu percebo que esta questão está potencialmente envolvendo um "webapp" e potencialmente envolvendo "administração de servidor" e como meu objetivo é desligar meu computador do loop, posso ver pessoas dizendo que isso está fora do assunto e deveria estar em outro site . Meu problema é o seguinte: não sei se será uma solução webapp ou uma solução de servidor, mas sei que, independentemente disso, usarei um computador para fazer isso e estou substituindo uma função que está atualmente concluída no meu computador, então resolvi perguntar aqui. Se eu estava errado e isso definitivamente deveria estar em webapps, sinta-se à vontade para me avisar ou apenas migrá-lo.

Responder1

Você poderia:

  • VNC no servidor, carregue um navegador e baixe o arquivo.
  • SSH no servidor e faça essencialmente o mesmo, mas usando a CLI (curl? wget?). É possível usar SSH para executar um comando remoto; verresposta de ulidtko para um exemplo disso.
  • Crie um aplicativo no servidor que possa enfileirar URLs de downloads de arquivos (um serviço web?). Ele pode pesquisar a fila, baixando cada arquivo até que a fila esteja vazia.

Responder2

Com CLI isso é incrivelmente fácil.

$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg"
$ ssh usuário@host remoto 'wget $URL'

--2011-02-05 11:15:10-- http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg
Resolvendo upload.wikimedia.org... 91.198.174.234
Conectando-se a upload.wikimedia.org|91.198.174.234|:80... conectado.
Solicitação HTTP enviada, aguardando resposta... 200 OK
Comprimento: 576216 (563K) [imagem/jpeg]
Salvando em: `Red_Apple.jpg'

     0K .......... .......... .......... .......... ......... 8% 327K 2s
    50K .......... .......... .......... .......... ......... .17% 668 mil 1s
   100K .......... .......... .......... .......... ......... 26% 1,23 milhões 1s
   150K .......... .......... .......... .......... ......... 35% 1,23 milhões 1s
   200K .......... .......... .......... .......... ......... 44% 697 mil 0s
   250K .......... .......... .......... .......... ......... 53% 1,15 milhão 0s
   300K .......... .......... .......... .......... ......... 62% 707 mil 0s
   350K .......... .......... .......... .......... ......... 71% 1,13 milhões de 0s
   400K .......... .......... .......... .......... ......... 79% 713 mil 0s
   450K .......... .......... .......... .......... ......... 88% 1,13 milhões de 0s
   500K .......... .......... .......... .......... ......... 97% 702 mil 0s
   550K .......... .. 100% 3,13M=0,7s

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

Aqui usamos duas ferramentas importantes:sshewget. A maior parte da saída é de wget- mas é a saída da instância wget lançadana máquina remota; o arquivo é salvo no userdiretório inicial em remote-host.

Responder3

agora, isso dependeria se você estiver usando hospedagem compartilhada, ou algo com muito mais liberdade. Se for o primeiro, teria que ser um pedaço feio.

Se você tivesse um VPS ou alguma outra hospedagem com um sistema próprio, você poderia configurar o que precisa - digamos, um cliente de torrent, algo comofluxo de torrentse você desejasse acesso total e/ou o método de cliente ssh/cli mencionado anteriormente (embora, se estiver entediado o suficiente, uma combinação de dropbox para carregar os links para o servidor, combinada com um script cron inteligente seria uma maneira maravilhosamente abusiva de dizer a um sistema quais arquivos abrir/baixar com o quê).

Você pode até compactar periodicamente seu download em partes para upload para economizar ainda mais largura de banda.

Responder4

Crie uma pasta chamada “downloads” no servidor de destino. Salve este código em um .phparquivo e execute no servidor de destino:

<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> 

informação relacionada