我想将文件直接下载到托管服务器,无论是我自己设置的服务器还是像 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>