2014-02-24 65 views
0

所以我寫了下面的代碼:鞋掛在網:: FTP把

Shoes.app(:title=> "Humax Uploader", :width=>400, :height=>400) { 
    background rgb(240, 250, 208) 
    stack(margin:10) { 
     title "Humax Uploader" 
     server = '[ip]' 
     user = '[user]' 
     pass = '[pass]' 
     require 'net/ftp' 
     @feedback = para "Find a file:" 
     flow do 
      @filename = edit_line :width => 150 
      para ' ' 
      button 'Browse...' do 
       @filename.text = ask_open_file 
      end 
     end 

     file_list = ['My Music','My Photo','My Video'] 
     list_box :items => file_list do |list| 
       Net::FTP.open(server, user, pass) { |ftp| 
        usize = 0 
        fsize = File.size(@filename.text) 
        ftp.putbinaryfile(@filename.text,"/mnt/hd2/" + list.text + "/" + File.basename(@filename.text),1024) { |block| 
         usize += block.size 
         @p.fraction = fsize/usize 
        } 
        @file_select.text = "File uploaded!" 
        ftp.close 
       } 
      end 
     @p = progress :width => 360 
     @file_select = para " " 
    } 
} 

基本上,它的作用是讓用戶選擇一個文件,它應該進入,然後在文件夾中,該程序應該上傳它。

這種情況是正確的:東西上傳正常,但不幸的是:程序窗口在上傳期間掛起。爲什麼會發生這種情況(你是否遇到同樣的問題?),我該如何解決它?

感謝您的幫助!

請注意,我正在Windows上運行此腳本,尚未「build」爲可執行文件。

回答

1

它是永久掛起還是直到文件上傳完成?無論如何,我認爲這是一個時間安排問題。

您可能需要考慮運行上傳in a separate threadthis link也可能是有用的),或者可能將其作爲單獨的進程運行並使用某種套接字或文件進行進程間通信。

+0

它掛起,直到文件上傳:然後進程欄填充,一切都很好。不幸的是,只是「添加」一個線程不適合我。現在將檢查出第二個鏈接! – TheUnpragmaticProgrammer

+1

您的第二個鏈接已經發布了!必須在應用程序之外創建一個新線程並處理這些內容。現在我需要找出如何更新進度條:P – TheUnpragmaticProgrammer