groovy 尝试从URL下载文件时Grails的异常

des4xlb0  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(98)

我正在尝试在我的一些系统上自动更新固件。因此,我首先从供应商网站下载固件文件,然后我想将其上传到我的TFTP服务器,以便我的设备安装新固件。
我使用以下代码来实现:

def initiateUpdate(){
    if(!downloadFirmware()){
        println "Firmware download failed"
        return false
    }
}   

def downloadFirmware(){
    String downloadURL = 'https://myvendor.com/firmware/fw1.bin'
    redirect(url: downloadURL)
    return true  
    }

字符串
这一切都工作得很好,我在我的下载目录中得到一个fw1.bin。但是当我试图无缝上传到我的TFTP服务器时,它以某种方式破坏了固件下载。即,如果我现在添加:-

def initiateUpdate(){
    if(!downloadFirmware()){
        println "Firmware download failed"
        return false
    }
    if(!uploadFirmware()){
        print "Firmware upload failed"
        return false
    }
}   

def downloadFirmware(){
    String downloadURL = 'https://myvendor.com/firmware/fw1.bin'
    redirect(url: downloadURL)
    return true  
    }

def uploadFirmware(){
    String home = System.getProperty("user.home");
    def file=home + "\\Downloads\\fw1.bin"

    //  Now do the TFTP upload

    }


当我做initiateUpdate时,它不再下载文件,它到达uploadFirmware部分并失败,因为没有文件要上传。
我想我误解了重定向是如何工作的,所以任何关于我做错了什么的指针,或者一个更好的方法,我都会感激不尽。

ny6fqffe

ny6fqffe1#

你必须使用某种http客户端从远程位置下载文件并保存到你的服务器磁盘上。你不能在浏览器中使用重定向。
我的意思可能是这样的:

def uploadFirmware(){
    String home = System.getProperty("user.home");
    File file = new File( home, "\\Downloads\\fw1.bin" )
    String url = 'https://myvendor.com/firmware/fw1.bin'

    file.withOutputStream{ it << new URL( url ).inputStream() }

    true    
}

字符串

相关问题