Мне нужно создать ImageIcon из изображения на удаленном сервере. Когда я загрузил его с URL-адресом вроде http://www.server.com/1.png
, он работал нормально.
Но недавно сервер был изменен, так что изображения хранятся вне корневого веб-каталога и должны быть доступны с помощью чего-то вроде http://www.server.com/get_image.php?id=1
, где get_image.php выводит правильные заголовки для обслуживания изображения. Когда я создаю ImageIcon с этим типом URL, он не загружается без каких-либо исключений, и getImageLoadStatus () возвращает MediaTracker.ERRORED. Скрипт обслуживания изображений работает нормально из браузера.
Любые идеи о том, как я мог бы сделать эту работу?
Спасибо.
Редактировать: вот код Java.
ImageIcon labelIcon = new ImageIcon(new URL(IMAGE_URL));<br>
System.out.println(labelIcon.getImageLoadStatus());
Я также попробовал следующее, но оно тоже не сработало.
ImageIcon labelIcon = new ImageIcon();<br>
BufferedImage image = ImageIO.read(new URL(IMAGE_URL));<br>
labelIcon.setImage(image);
Редактировать: вот код из get_image.php. $ DB - это объект, включенный в global.php, который используется для взаимодействия с базой данных MySQL. Я подтвердил, что возвращаемым типом MIME является image / png.
<?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();
}
?>