2011-01-12 37 views
9

Tôi tự hỏi những cách thích hợp để đi về tải hình ảnh từ Rul này sẽ là: http://www.hidemyass.com/proxy-list/img/port/7018246/1hình ảnh tải về Groovy từ URL

Con đường tôi đã cố gắng tải về nó, rời khỏi tập tin trong một định dạng lạ. Đoạn mã hiện tại tôi đã thử nghiệm là:

public void download(def address) { 

    def file = new FileOutputStream(address.tokenize("/")[-1]) 
    def out = new BufferedOutputStream(file) 
    out << new URL(address).openStream() 
    out.close() 
} 

Trả lời

17

Tính năng này có hoạt động không? Tôi tin rằng nó nên:

public void download(def address) { 
    new File("${address.tokenize('/')[-1]}.png").withOutputStream { out -> 
    out << new URL(address).openStream() 
    } 
} 
9

Cảm ơn Tim, tôi cũng tìm thấy câu trả lời của bạn rất hữu ích, chỉ cần lưu ý nhỏ: Hình như bạn chưa dòng URL khép kín. Tôi chỉ bắt đầu với Groovy, và tôi đã nghe nói rằng nó gần hơi nước khi thoát khỏi đóng cửa vì vậy chúng tôi có thể thay đổi mã như thế:

public void download(def address) { 
    new File("${address.tokenize('/')[-1]}.png").withOutputStream { out -> 
     new URL(address).withInputStream { from -> out << from; } 
    } 
} 
2

Bạn có thể nhận loại hình ảnh từ kiểu nội dung của họ - URLConnection.getContentType() hoặc từ byte mảng:

content="http://www.google.ru/images/logo.png".toURL().getBytes() 
ext=URLConnection.guessContentTypeFromStream(new ByteArrayInputStream(content)).replaceFirst("^image/","") 
new File("logo."+ext).setBytes(content) 
Các vấn đề liên quan