Загрузка файла через Ajax в Spring 3.0 - PullRequest
2 голосов
/ 25 января 2012

Какой самый лучший или самый простой способ загрузить файл через Ajax в Spring 3.0?
Я хочу отправить форму через Ajax, которая будет содержать File.Also решение не должно зависеть от Flash и т. Д., Как Uploadify . Я попробовал плагин Jquery form , но не смог заставить его работать. Вы можете проверить мой предыдущий вопрос для более подробной информации.

Спасибо!


РЕДАКТИРОВАТЬ: Я хочу отправить форму через Ajax, которая будет содержать файл. На стороне сервера я хочу собрать его в атрибуте модели.

Ответы [ 3 ]

0 голосов
/ 30 января 2012

Используется Ajax-загрузка все работает. Но он вызывает контроллер, как только файл выбран.

0 голосов
/ 02 февраля 2012

вы пробовали плагин jquery для malsup .... у меня он работал нормально

http://malsup.com/jquery/form/
0 голосов
/ 30 января 2012

Я недавно сделал это с помощью Dojo Iframes.Вот код для этого (нужно вызвать его из action = "return submitForm ();" из тега формы):

submitForm = function() {
dojo.io.iframe.send({
    url : "/uploadForm",
    form : "html_form_id",
    method : "POST",
    handleAs : 'text',
    load : function(response, ioArgs) {
            //handle your response here...
            return response;
    },
    error : function(response, ioArgs) {
        if (ioArgs.xhr.status != 0) {
            try {
                //handle error here
            } catch (e5) {
            }
        }
        return response;
    }
});
return false;
}

На стороне сервера, в вашем Spring Controller, вы будете обрабатывать это как:

    @RequestMapping(method = RequestMethod.POST, value = "/uploadForm")
    public ModelAndView onSubmit(
            @RequestParam("file") MultipartFile multipartFile,
        final HttpServletResponse response)
        throws Exception 
    { 

        String fileName="";
        if(multipartFile!=null)
        {
                    fileName = multipartFile.getOriginalFilename();
        }

        //file inputstream can be accessed as multipartFile.getInputStream()

        String resultCode = "0";

        final String responseHTML = "<html><head></head><body><textarea>" + resultCode + "</textarea></body></html>";
        response.setContentType("text/html");

        final OutputStream responseStream = response.getOutputStream();
        responseStream.write(responseHTML.getBytes());
        responseStream.write("\r\n".getBytes());
        responseStream.close();
    }

Вам нужно будет указать входной параметр типа файла как «файл» (как функции обработки говорят @RequestParam («файл»))

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