Как отправить изображение с Java-сервера и обработать его на JQuery-клиенте - PullRequest
0 голосов
/ 13 октября 2011

Я хочу изменить масштаб изображения и вернуть его клиенту, и у меня возникли проблемы с отправкой изображения обратно клиенту.

Мой серверный контроллер:

@RequestMapping(value = {"/fw/ajax/submit_profileimage.do"})
public void submitFile(HttpServletRequest request, HttpServletResponse response, @RequestParam("file") MultipartFile f) {
    try {
        InputStream in = new ByteArrayInputStream(f.getBytes());
        BufferedImage originalImage = ImageIO.read(in);
        BufferedImage newImage = new BufferedImage(MAX_HEIGHT, MAX_WIDTH, BufferedImage.TYPE_INT_RGB);
        paintComponent(newImage.getGraphics(), originalImage, getRatio(originalImage));

        ImageIO.write(newImage, "png", response.getOutputStream());
        response.setContentType("image/png");
        response.getOutputStream().flush();
        response.getOutputStream().close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

Код Jquery на стороне клиента:

uploadButton.click(function(){
    $('#imagePreview').addClass('loading');
    form.ajaxSubmit(function(data){
    alert(data); //this is where I'd like to handle the image!
    });
});

данные, возвращаемые ajaxSubmit:

"<body style="margin: 0px;"><img style="-webkit-user-select: none" src="http://localhost:8080/fairview/ajax/submit_profileimage.do"></body>"

Очевидно, что это не файл изображения.Но когда я проверяю отладчик, я вижу, что запрос submit_profileimage.do успешно выполнен и якобы вернул изображение!Я понятия не имею, сделал ли я что-то не так на стороне клиента или на стороне сервера.Debugger-info-overview Debugger-info-detailed

Итак, вопрос: как я могу отобразить изображение на стороне клиента?

Ответы [ 3 ]

3 голосов
/ 13 октября 2011

Я бы просто сохранил изображение с измененным размером на сервере и вернулся бы к jquery, просто указав URL, по которому было сохранено изображение с измененным размером. Затем просто установите атрибут src изображения для этого URL. Браузер позаботится о загрузке изображения.

uploadButton.click(function(){
    $('#imagePreview').addClass('loading');
    form.ajaxSubmit(function(data){
        //Assuming data is the URL to the resized image.
        $("#myimage").attr("src", data);
    });
});
1 голос
/ 13 октября 2011

Возможно, вы ищете " встроенные изображения ".

Здесь - решение Java.

Хорошего дня!

0 голосов
/ 13 октября 2011

Я использовал подход, описанный здесь как принятый ответ: Помогите получить изображение с сервлета на страницу JSP

Что в значительной степени означает, что я действительно не ответил на первоначальный вопрос, я все еще не могу обработать необработанное изображение клиентской стороны. Вместо этого я использую один сервис для хранения изображения, возвращаю идентификатор места хранения изображения и устанавливаю src attr изображения для сервиса, который будет возвращать изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...