none
[問題] 自動連接FTP下載檔案 RRS feed

  • 問題

  • 小弟要寫個程式...
    1. 自動從FTP站台中的"特定目錄"中取出檔案 (直接使用Network.DownloadFile就可以了?)
    2. 能夠定時執行 (如: 每天下午4點, Timer元件能做嗎?)
    3. 背景執行 (使用BackgroundWork?)

    最重要的一點...
    因為小弟這邊的FTP都比較掛Proxy才連的出去
    Proxy還需要帳號密碼...

    我在網路上搜尋的資料...都沒有寫要如何設定Proxy的ID & Password



    以上希望各位指點, 謝謝!

    2006年5月23日 上午 08:36

解答

  • 1. 一般來說可以用 webClient.DownloadFile 抓。

    http://tlcheng.no-ip.com/TLCheng/Net/NetList.aspx?Action=Function&Module=15&Function=89

    2. 簡單一點的話,用排程去做就可以了,當然你也可以用 Timer 做,但是變成你電腦要一直多跑一個程式,浪費資源,不如用排程排。

    3. 請明確定義何謂 背景 ,對 Windows 來說,所有的程式都是一樣的,服務是無可見畫面、不可互動,在 SysTray 只是縮小的位置。所以基本上在 Windows 下的背景只要是非前景的程式都稱為背景,也就是非焦點所在或是作用中的視窗都可以稱為背景。

    .Net 類別是包 Wininet.dll ,所以若是你在 IE 用 ftp://userid:password@server:port/path/file.ext 可以直接存取時,webClient 就可以直接存取,若是你用 IE 會跳出 proxy 的 id/password ,並可記憶時,可記憶在排程所設定的代理使用者上,否則你可能要改用 tcpClient 自己來寫,我沒碰過這類的 proxy ,所以沒測過。

    2006年5月23日 下午 12:00
    版主

所有回覆

  • 1. 一般來說可以用 webClient.DownloadFile 抓。

    http://tlcheng.no-ip.com/TLCheng/Net/NetList.aspx?Action=Function&Module=15&Function=89

    2. 簡單一點的話,用排程去做就可以了,當然你也可以用 Timer 做,但是變成你電腦要一直多跑一個程式,浪費資源,不如用排程排。

    3. 請明確定義何謂 背景 ,對 Windows 來說,所有的程式都是一樣的,服務是無可見畫面、不可互動,在 SysTray 只是縮小的位置。所以基本上在 Windows 下的背景只要是非前景的程式都稱為背景,也就是非焦點所在或是作用中的視窗都可以稱為背景。

    .Net 類別是包 Wininet.dll ,所以若是你在 IE 用 ftp://userid:password@server:port/path/file.ext 可以直接存取時,webClient 就可以直接存取,若是你用 IE 會跳出 proxy 的 id/password ,並可記憶時,可記憶在排程所設定的代理使用者上,否則你可能要改用 tcpClient 自己來寫,我沒碰過這類的 proxy ,所以沒測過。

    2006年5月23日 下午 12:00
    版主
  • 謝謝您的回答....

    排程是指Windows本身的工作排程嗎?
    那....執行的時間可以依使用者自定嗎?

    因為公司網路的proxy需要ID/Password才有辦法連到FTP...
    (我是用CuteFTP去做連接測試)
    在網路上的資料也都沒提及這方面的設定方式...

    再次感謝 ^_^

    2006年5月24日 上午 01:33
  • 是。

    以日為單位比較簡單,日以內的要使用進階設定。

    下面的網址是以每小時 10 分時啟動為示範。

    http://tlcheng.no-ip.com/Staff/webget/Help/System/run.htm


    proxy 部分我沒試過,因為沒有那個網路環境。防火牆的或是虛擬 ip 的,只要勾選網際網路選項中,使用被動式 ftp 之類的就可以用 wininet.dll 了。
    2006年5月24日 上午 02:34
    版主
  • 再次感謝您!

    額外問一個小問題...

    要如何list出FTP裡面的檔案呢??

    謝謝!

    2006年5月24日 上午 03:15
  • 你如果要做到這麼細,你可能要直接使用 VS2005 ftpWebRequest/ftpWebResponse 類別來做。

    你可以瀏覽線上手冊,下載 ftp 總管範例參考:

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.cht/dv_fxsamples/html/7b16941d-2a77-4fb6-9ba7-40cd6d9897b7.htm

    http://msdn2.microsoft.com/zh-tw/library/ms233623(VS.80).aspx

     

    2006年5月24日 上午 06:04
    版主
  • 真不好意思又跑來問....@@

    您告知的範例我有去看過了...

    完整的範例 by MSDN: 上頭是VC的語法...

    很用力的看還是一知半解... = =

    只是有個function: Download Action > Download Directory 這就是我想要做到的

    MS-HELP: 雖然是VB的語法...

    還是有些問題...

    用GetResponse去抓到的List是有包含屬性等等資訊的字串...

    好像不太實用...請問有什麼使用技巧嗎?

    2006年5月25日 上午 03:58
  • 我前面貼的線上手冊的位置是 VB.NET 範例~

    你可能看看線上手冊吧~

    2006年5月25日 上午 07:29
    版主
  • VB.NET 我還沒做過 Ftp Dir ,VB6 倒是有一個,若是想要呼叫 API 的話,可以看一看:

    http://tlcheng.no-ip.com/TLCheng/Net/NetList.aspx?Action=Function&Module=12&Function=108

    2006年5月25日 上午 07:33
    版主
  •  璉璉 寫信:

    你如果要做到這麼細,你可能要直接使用 VS2005 ftpWebRequest/ftpWebResponse 類別來做。

    你可以瀏覽線上手冊,下載 ftp 總管範例參考:

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.cht/dv_fxsamples/html/7b16941d-2a77-4fb6-9ba7-40cd6d9897b7.htm

    http://msdn2.microsoft.com/zh-tw/library/ms233623(VS.80).aspx

     

     

     

    這個連結裡的範例是c#的...

    是連結跑掉了嗎?

    搜尋只有找到c#的!!

    請問有vb.net的嗎?

    2007年7月26日 上午 07:34