![如何將檔案直接下載到網頁伺服器?](https://rvso.com/image/1264380/%E5%A6%82%E4%BD%95%E5%B0%87%E6%AA%94%E6%A1%88%E7%9B%B4%E6%8E%A5%E4%B8%8B%E8%BC%89%E5%88%B0%E7%B6%B2%E9%A0%81%E4%BC%BA%E6%9C%8D%E5%99%A8%EF%BC%9F.png)
我想將文件直接下載到託管伺服器,無論是我自己設定的伺服器還是 Dropbox 等託管服務。
例如,當我下載播客時,不是將其下載到我的電腦然後上傳到伺服器,而是如何將其直接下載到雲端。我的興趣是減少我在筆記型電腦上透過計量資料計畫使用的流量,因此我不希望我的電腦充當快取檔案的實體中介。
理想情況下,我可以透過某種方式獲得下載連結並告訴它直接訪問我的伺服器。我怎樣才能做到這一點?
我意識到這個問題可能涉及“網頁應用程式”,並且可能涉及“伺服器管理”,並且由於我的目標是讓我的電腦脫離循環,我可以看到人們說這是偏離主題的,應該在另一個網站上。我的問題是這樣的:我不知道這將是一個網絡應用程序解決方案還是一個服務器解決方案,但我確實知道,無論如何我將使用計算機來完成它,並且我正在替換當前已完成的功能在我的電腦上,所以我想我會在這裡問。如果我錯了,這絕對應該在 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 user@remote-host '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 2s 50K ................................................. .................................................. ..... 17% 668K 1s 100K ................................................. .................................................. ..... 26% 123 萬個 1 秒 150K ................................................. .................................................. ..... 35% 123 萬個 1 秒 200K ................................................. .................................................. ..... 44% 697K 0 250K ................................................. .................................................. ..... 53% 115 萬個 0 300K ................................................. .................................................. ..... . 62% 707K 0 350K ................................................. .................................................. ..... 71% 113 萬個 0 400K ................................................. .................................................. ..... 79% 713K 0 450K ................................................. .................................................. ..... 88% 113 萬個 0 500K ................................................. .................................................. ..... . 97% 702K 0 550K .. .. 100% 3.13M=0.7s 2011-02-05 11:15:11 (777 KB/s) - `Red_Apple.jpg' 已儲存 [576216/576216]
這裡我們使用兩個重要的工具:SSH和獲取。大多數輸出來自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>