8

ファイルをダウンロードする必要があるため (例: https://www.betaseries.com/srt/391160 )、Web でさまざまな方法を見つけました。

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 です。どうすれば修正できますか?

少し早いですがお礼を、

ベンジャミン

4

1 に答える 1

10

したがって、URL https://www.betaseries.com/srt/391160がhttp://www.betaseries.com/srt/391160 (https ではなく http) にリダイレクトされるように見えます。

したがって、取得しているのは、完全な応答画像ではなく、リダイレクト応答 (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()
          }
        }
      }
    }
  }
}
于 2013-01-23T10:22:53.960 に答える