如何将文件直接下载到网络服务器?

如何将文件直接下载到网络服务器?

我想将文件直接下载到托管服务器,无论是我自己设置的服务器还是像 Dropbox 这样的托管服务。

例如,当我下载播客时,如何才能将其直接下载到云端,而不是先下载到电脑上再上传到服务器。我感兴趣的是减少笔记本电脑上按流量计费的数据流量,因此我不希望我的电脑充当缓存文件的物理中介。

理想情况下,我应该有某种方式来获得下载链接并让它直接转到我的服务器。我该如何实现这一点?

我意识到这个问题可能涉及“webapp”,也可能涉及“服务器管理”,由于我的目标是将我的计算机排除在外,我可以看到有人说这是题外话,应该在另一个网站上。我的问题是这样的:我不知道这是否是一个 webapp 解决方案或服务器解决方案,但我确实知道无论如何我都会使用计算机来完成它,而且我正在替换当前在我的计算机上完成的功能,所以我想我会在这里问。如果我错了,这肯定应该在 webapps 上,请随时告诉我或直接迁移它。

答案1

你可以:

  • 通过 VNC 进入服务器,加载浏览器,并下载文件。
  • 通过 SSH 进入服务器,使用 CLI(curl?wget?)执行基本相同的操作。可以使用 SSH 执行远程命令;请参阅ulidtko 的回答就是一个例子
  • 在服务器上创建一个应用程序,可以将文件下载的 URL 排队(Web 服务?)。它可以轮询队列,下载每个文件,直到队列为空。

答案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)[图像/jpeg]
保存至:'Red_Apple.jpg'

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

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

这里我们使用两个重要工具:远程控制获得. 大多数输出​​来自wget— 但它是启动 wget 实例的输出在远程机器上;该文件保存在user的主目录中remote-host

答案3

现在,这取决于您使用的是共享主机还是其他更自由的主机。如果是前者,那么它就可能是一个丑陋的障碍。

如果你有一台 VPS 或其他托管服务器,并且拥有自己的系统,那么你可以设置所需的东西,比如 torrent 客户端,例如洪流如果您想要完全访问权限和/或前面提到的 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> 

相关内容