【问题标题】:Shoes hangs on Net::FTP put鞋子挂在 Net::FTP 上
【发布时间】:2014-02-24 18:54:35
【问题描述】:

于是我写了如下一段代码:

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 上运行此脚本,但尚未“构建”可执行文件。

【问题讨论】:

    标签: ruby file-upload shoes net-ftp


    【解决方案1】:

    它是永远挂起还是直到文件被上传?无论哪种情况,我都认为这是一个调度问题。

    您可能需要考虑运行上传 in a separate threadthis link 也可能有用)或者将其作为单独的进程运行并使用某种套接字或文件进行进程间通信。

    【讨论】:

    • 它挂起,直到文件上传:然后进程栏填满,一切正常。不幸的是,仅仅“添加”一个线程对我不起作用。现在将检查第二个链接!
    • 您的第二个链接做到了!必须创建一个新线程(在应用程序之外)并处理其中的内容。现在我需要找出如何让它更新进度条:P
    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多