Загрузка фото Весна - Аякс - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь загрузить фотографию и получить предварительный просмотр загруженного изображения с помощью Spring и Ajax.

У меня есть следующий код:

<h3>File Upload</h3>
    <ul>
        <li>
            <form id="upload-form" method="post" enctype="multipart/form-data">
                Select a file: <input type="file" name="uploadfile" size="45" accept="*" />
                <br>
                <input id="submit-button" type="submit" value="Upload" />
            </form>
        </li>
        <li><p>Result: <br><span id="result"></span></p></li>
    </ul>

    <h3>Show Image</h3>
    <ui>
        <li>original:<img id="image-o" src="#" alt="original image" /></li>
        <li>small: <img id="image-s" src="#" alt="small image" /></li>
        <li>medium: <img id="image-m" src="#" alt="medium image" /></li>
        <li>large: <img id="image-l" src="#" alt="large image" /></li>
        <li>extra large: <img id="image-xl" src="#" alt="extra large image" /></li>
    </ui>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#submit-button").on("click", function (event) {
                event.preventDefault();

                // create an FormData object
                var data = new FormData($('#upload-form')[0]);

                // disabled the submit button
                $("#submit-button").prop("disabled", true);

                // post data
                $.ajax({
                    type: "POST",
                    enctype: 'multipart/form-data',
                    url: "image/api/upload",
                    data: data,
                    processData: false,
                    contentType: false,
                    cache: false,
                    timeout: 600000,

                    success: function (data) {
                        // shows server's response
                      //  $("#result").text(data);
                        console.log("SUCCESS: ", data);

                        enableSubmitButton();
                        updateImages(data);
                    },

                    error: function (e) {
                        // shows server's response
                      //  $("#result").text(e.responseText);
                        console.log("ERROR: ", e);

                        enableSubmitButton();
                        updateImages(e.responseText);
                    }
                });
            });
        });

        function enableSubmitButton() {
            $("#submit-button").prop("disabled", false);
        }

        function updateImages(data) {
            var url = 'http://localhost:9001/image/api/' + data;
            $('#image-s').attr('src',url + '?size=s');
            $('#image-m').attr('src',url + '?size=m');
            $('#image-l').attr('src',url + '?size=l');
            $('#image-xl').attr('src',url + '?size=xl');
            $('#image-o').attr('src',url + '?size=o');
        }
    </script>

И мой код Java:

@POST
@Path("/upload")
@Consumes(ExtendedMediaType.MULTIPART_FORM_DATA)
@Produces(ExtendedMediaType.APPLICATION_JSON_UTF8)
@Transactional
public ResponseEntity<Void> uploadImage(@RequestParam("uploadfile") MultipartFile file) {

if (file.getSize() < maxFileSize && validExtensions.contains(file.getContentType())) {

        Image image = Image.builder().id(file.getSize()).build();
        imageServiceConfigMapper.saveImage(image);

       /* FormDataContentDisposition fileDetail = null;
        ImageMetadata imageMetadata = buildImageMetadata(fileDetail, image);
        imageServiceConfigMapper.saveMetadata(imageMetadata);*/
    }
        return new ResponseEntity<>(HttpStatus.OK);

Когда я выбираю фотографию с моего компьютера, она принимается - см. Скриншот ниже:

enter image description here

Когда я нажимаю на кнопку загрузки, мой браузер дает следующий ответ:

enter image description here

JSON выглядит так:

enter image description here

НО выбранное изображение не отображается :

enter image description here

Я использую неправильный URL? Адрес сайта, на котором я получил указанный выше экран, - это адрес с index.html в конце, но я определил / api / upload как относительный путь ... Если я открою относительный путь, я получу следующее:

enter image description here

Или что-то не так с кодом, отвечающим за предварительный просмотр?

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

1 Ответ

0 голосов
/ 04 мая 2018

Spring Content может сделать это и имеет руководство по началу работы и git-репо с интерфейсом на основе angularjs, который демонстрирует именно то, что вы пытаетесь сделать. Руководство по началу работы: здесь .

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