PHP Script tarafından servis Görüntü Java ImageIcon yükleniyor

2 Cevap java

Ben bir uzak sunucuda bir görüntüden bir ImageIcon oluşturmanız gerekir. Ben gibi bir URL ile yüklendiğinde, http://www.server.com/1.png iyi çalıştı.

Görüntüleri web kök dışında saklanır ve get_image.php görüntüyü hizmet etmek doğru başlıklarını çıktılar http://www.server.com/get_image.php?id=1 gibi bir şey, erişilebilir olmalıdır böylece Ama son zamanlarda sunucu değişti. Ben URL türü ile bir ImageIcon oluşturduğunuzda, herhangi bir istisna ve getImageLoadStatus atma olmadan yüklenmemesi () MediaTracker.ERRORED döndürür. Görüntü veren komut bir tarayıcı çalışıyor.

Herhangi bir fikir nasıl bu işi yapabiliriz?

Teşekkürler.

Düzenleme: Burada Java kod.

ImageIcon labelIcon = new ImageIcon(new URL(IMAGE_URL));
System.out.println(labelIcon.getImageLoadStatus());

Ben de aşağıdaki çalıştı, ama o da işe yaramadı.

ImageIcon labelIcon = new ImageIcon();
BufferedImage image = ImageIO.read(new URL(IMAGE_URL));
labelIcon.setImage(image);

Düzenleme: İşte get_image.php gelen kod. $ DB MySQL veritabanı ile etkileşim için kullanılan global.php itibaren dahil bir nesnedir. Ben iade edilen MIME tipi image / png olduğu doğrulandı.

<?php
    if (isset($_GET['uid']))
    {
        require_once('./include/global.php');       
        getUpload(intval($_GET['uid']));
    }

    function getUpload($id)
    {
        global $DB;

        $query = "SELECT `name`, `mime_type` FROM `uploads` WHERE `id` = " . $id . " LIMIT 1";
        $arrUpload = $DB->getSingleRecord($query);

        if (count($arrUpload) > 0)
        {
            $file = UPLOADS_ROOT . $arrUpload['name'];
            header("Content-type: " . $arrUpload['mime_type']);
            header("Content-Disposition: filename=" . $arrUpload['name']);
            readfile($file);
        }
        else
        {
            header("HTTP/1.1 404 Not Found");
        }
        die();
    }
?>

2 Cevap

ImageIcon(URL) başarısız olabilir nedenlerinden biri yanıt durumu 200 dönmedi olmasıdır. URL yani bir yönlendirme durumu (301/302) iade veya vermedi emin olun. Ayrıca istek parametre adının doğru olduğundan emin olun. Siz URL id kullanılan, ancak PHP komut dosyası uid bekliyor.

Sadece Java kodu aslında alır ne yanıt başlıkları kontrol etmek için kendinize biraz etrafında oynatmak için, bu bir deneyin:

URL url = new URL("http://www.server.com/get_image.php?id=1");
URLConnection connection = url.openConnection();
for (Entry<String, List<String>> header : connection.getHeaderFields().entrySet()) {
    System.out.println(header.getKey() + "=" + header.getValue());            
}

Emin onun doğru cevaba image/png için içerik türü başlığı ayarı emin olun: Sunucu yanlış içerik türünü iade edilebilir.