2009/01/22

[Linux] wget post file

我們在做 web 的時候,可以很簡單的在 server 上面寫這樣一個 php script 來 upload 一個檔案:
<?
$fn = $_FILES[test][name];
$temp = $_FILES[test][tmp_name];
$path = "/var/www/html/dl/a/";
copy($temp, $path.$fn);
?>


接著只要在網頁上建立這樣的標籤內容:
<form action="/dl/up.php" method="post" enctype="multipart/form-data">
<input type="file" name="test">
<input type="submit" value="submit">
</form>


一個簡單的 http file upload 模型就建起來了。

不過這樣的模式只適合有使用瀏覽器,有 GUI 的介面的使用者。今天如果是利用 wget 在 console 底下定時上傳檔案備份之類的行為,這樣就不適用 web 開上傳。

我們查看 wget 的 manpage 裡,可以查得到 --post-file 這個給 file upload 的參數,在實做上面,只需要加上 mime-type 的標頭就可以讓 server page 知道今天是要做 file upload 的行為,這個指令會像是:
wget http://192.168.1.128/dl/up.php --post-file=post.data --header="Content-Type: multipart/form-data; boundary=FILEUPLOAD" -O /dev/null --http-user=admin --http-password=test1234


post.data 在 manpage 裡面有說明到,其實 post data 就是 cgi post 處理時從 stdin 讀進來的資料,就長這樣:


--FILEUPLOAD
Content-Disposition: form-data; name="test"; filename="1.txt"
Content-Type: text/plain

12345

--FILEUPLOAD--


其中 boundry 的部份在 wget 送標頭的時候也要加上,這樣 server page 才會知道從哪邊開始讀。
張貼留言

[Windows] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...