我需要下载一个文件(例如:https://www.betaseries.com/srt/391160),所以我在网上找到了不同的方法:
def download(String remoteUrl, String localUrl)
{
def file = new FileOutputStream(localUrl)
def out = new BufferedOutputStream(file)
out << new URL(remoteUrl).openStream()
out.close()
}
或
def download(String remoteUrl, String localUrl) {
new File("$localUrl").withOutputStream { out ->
new URL(remoteUrl).withInputStream { from -> out << from; }
}
}
我看到文件已创建,但文件大小总是等于1KB我该怎么办呢?
提前感谢,
本杰明
答案 0 :(得分:6)
所以,看起来网址https://www.betaseries.com/srt/391160重定向到http://www.betaseries.com/srt/391160(http,而不是https)
所以你要抓的是重定向响应(1K)而不是完整的响应图像。
您可以这样做以获得实际图像:
def redirectFollowingDownload( String url, String filename ) {
while( url ) {
new URL( url ).openConnection().with { conn ->
conn.instanceFollowRedirects = false
url = conn.getHeaderField( "Location" )
if( !url ) {
new File( filename ).withOutputStream { out ->
conn.inputStream.with { inp ->
out << inp
inp.close()
}
}
}
}
}
}