открыть картинку через jQuery

365
30 августа 2017, 14:23

Приложение на java Spring, отображение на html+jQuery. Есть сущность для хранения в базе mySql

@Entity
@Table
public class Message {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private long idMessage;
    @Temporal(value = TemporalType.TIMESTAMP)
    private Date date = new Date();
    private String text;
    @Column(columnDefinition = "LONGBLOB")
    @Lob
    private byte[] img;    
    public Message() {
    }
...
}

Метод контролёра достаёт из базы все message по дате и списком в формате json отправляет на страницу

@RequestMapping("/upload/messages")
public void uploadMessages(HttpServletResponse response) {
    List<Message> messageList = serviceMessage.findAllMessage(date);       
    ObjectMapper mapper = new ObjectMapper();
    String json = "";
    try {
        json = mapper.writeValueAsString(messageList);
        response.getWriter().println(json);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

код страницы

<body>
...
<div>
    <div id="messageList">
        <%-- Message List... --%>
    </div>
</div>
</body>

код jQuery, который принимает список объектов от контролёра в формате json

    function UploadMessage() {
        $.ajax({
            type: "get",
            url: "upload/messages",
            dataType: "json",
            cache: false,
            beforeSend: function () {
...
            },
            success: SuccessUploadMessage
        })
    }
    function SuccessUploadMessage(result) {
        $.each(result, function (index, value) {
            var txt = value.text;
            var img = value.img;
            if (txt != null || img != null || nameSong != null) {
                $("#messageList").prepend("<div id='oneMessage'></div>");// предварительно создаём отдельный блок для каждого сообщения
                if (txt != null) {// вставляем текст сообщения
                    $("#oneMessage").prepend("<li id='myText' style='display: none'>" + value.text + "</li>");
                    $("#myText").fadeIn(1500);
                }
                if (img != null) {// вставка изображения
                    $("#oneMessage").prepend("<img id='myImg' src='' style='width: 140px; height: 100px; display: none'>");
                    $("#myImg").attr("src", "find/img/?idMessage=" + value.idMessage);                 
                    $("#myImg").show(800)
                }
                $("#messageList").prepend("<br>")
            }
        });
    }

в коде jQuery я прохожу по списку и обращаюсь к полю text объектов, чтобы получить значение этого поля, а для того, чтобы получить изображение я в тэг src вставляю путь к методу контролёра, тем самым делаю дополнительный запрос в бд и отправляю на страницу ResponseEntity<byte[]>. Вопрос: как открыть изображение обратившись напрямую к полю объекта?

READ ALSO
Постраничный вывод данных

Постраничный вывод данных

Добрый день, сделал простенькую пагинацию для своего проекта, хотел сделать чтобы выводилось хотя бы по 5 страниц (сделал это с помощью цыкла...

274
Выборка из таблиц со связью Many To Many

Выборка из таблиц со связью Many To Many

в БД PostgreSQL есть таблица Provider со строками id и nameТакже есть таблица Currencies с полями id и currency, и Countries с полями id и country

387
Как защитить исходный код?

Как защитить исходный код?

Нужно сделать так, чтоб apk файл нельзя было прочитать

314
JSON to Object MyBatis

JSON to Object MyBatis

В базе PosgreSQL есть колонка с jsonb, я хочу получить содержимое этой колонки не как строку, а как объект(преобразовать json в объект на лету, чтобы...

350