如何使用spring MVC restful service和jQuery上传文件

时间:2014-07-14 02:11:07

标签: jquery web-services spring-mvc

我正在开发一个带有springMVC restful服务的应用程序作为后端服务,jQuery作为前端技术。

现在我要求webservice将文件上传到服务器。我不知道如何编写这样的文件上传功能。我应该如何通过jQuery将文件发送到服务器?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我不确定你要求的是什么,这是我从你那里得到的

像这样的控制器代码

map.put("a", "/Student_Photos/sample.jpg");

在jsp中编写你的东西并包含这个

<form:form modelAttribute="uploadItem" action="add" name="student"
                method="post" enctype="multipart/form-data"
                onSubmit="return validate();">

              <td width="152"  rowspan="4"  ><img id="blah"
                        src="<c:url value="${a}"/>" alt="your image" width="130"
                        height="110" />

                    <form:input path="fileData" id="image" type="file"
                            onchange="readURL(this)" /></td>
              </form:form>

答案 1 :(得分:0)

在浏览器中有两种主要方法:

  1. 对于现代浏览器,请使用HTML5文件API。请参阅https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

  2. 如果您需要支持旧版浏览器,请将文件发布到隐藏的iFrame。请参阅http://viralpatel.net/blogs/ajax-style-file-uploading-using-hidden-iframe/

  3. 在服务器端,我将假设您正在为您的REST servlet使用Spring Data REST(SDR)。 SDR不执行文件上载,但您可以在同一个servlet中运行SDR以及常规的Spring MVC Dispatcher Servlet。

    如果保存到数据库,MVC Dispatcher的FileController中的处理程序方法将如下所示:

    @RequestMapping(value = "/files", method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)
    @ResponseBody
    List<FileEntity> upload(@RequestParam("file") MultipartFile[] multipartFiles) throws Exception {
    
        List<FileEntity> response = new ArrayList<FileEntity>();
    
        for (MultipartFile multipartFile : multipartFiles) {
    
            FileEntity f = new FileEntity(multipartFile.getBytes(), multipartFile.getContentType(), multipartFile.getOriginalFilename());
    
            fileRepository.save(f);
    
            response.add(f);
    
        }
    
        return response;
    
    }
    

    您希望在类路径上使用SDR,Apache Commons FileUpload和IO(或使用较新的Servlet 3 API而不是Apache Commons)。将它们添加为maven依赖项:

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
    
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
    
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-rest-webmvc</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>