Como posso baixar um arquivo diretamente para um servidor web?

3

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

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

Idealmente, haveria alguma maneira de eu ter um link de download e dizer para ir diretamente para o meu servidor. Como posso conseguir isso?

Eu percebo que esta questão está potencialmente envolvendo um "webapp" e está potencialmente envolvendo "administração do servidor" e já que meu objetivo é cortar meu computador fora do loop eu posso ver pessoas dizendo que isso é off-topic e deve estar em outro site. Meu problema é este: eu não sei se isso vai ser uma solução de webapp ou uma solução de servidor, mas eu sei, independentemente, eu vou estar usando um computador para fazê-lo e estou substituindo uma função que está sendo feita atualmente no meu computador, então eu pensei em perguntar aqui. Se eu estava errado e isso definitivamente deveria estar em webapps sinta-se livre para me informar ou apenas migrá-lo.

    
por matt 05.02.2011 / 07:04

4 respostas

6

Você poderia:

  • VNC no servidor, carregue um navegador e faça o download do arquivo.
  • SSH no servidor e basicamente o mesmo, mas usando o CLI (curl? wget?). É possível usar o SSH para executar um comando remoto; veja a resposta da ulidtko para um exemplo disso .
  • Crie um aplicativo no servidor que possa colocar em fila URLs de downloads de arquivos (um serviço da Web?). Ele pode pesquisar a fila, fazendo o download de cada arquivo até que a fila esteja vazia.
por 05.02.2011 / 07:23
3

Com o CLI isso é incrivelmente fácil.

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

Aqui usamos duas ferramentas importantes: ssh e wget . A maior parte da saída é de wget - mas é a saída da instância do wget lançada na máquina remota ; o arquivo é salvo no diretório pessoal do user em remote-host .

    
por 05.02.2011 / 10:25
1

agora, isso dependeria se você estivesse usando hospedagem compartilhada ou algo com muito mais liberdade. Se for o primeiro, gostaria de ser um cutucão feio.

Se você tivesse um VPS ou alguma outra hospedagem com efetivamente um sistema para si mesmo, você poderia configurar o que você precisa - por exemplo, um cliente de torrent, algo como torrentflux se você quiser acesso total e / ou o método cliente ssh / cli (embora, se estiver entediado o suficiente, uma combinação de dropbox para fazer upload dos links para o servidor, combinado com um script inteligente) seria uma maneira maravilhosamente abusiva de dizer a um sistema quais arquivos abrir / baixar com o quê).

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

    
por 05.02.2011 / 08:47
1

Crie uma pasta chamada "downloads" no servidor de destino. Salve este código em um arquivo .php 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> 
    
por 10.03.2012 / 14:52

Tags