我如何上传文件,哪些内容作为Spring MVC中的请求参数

时间:2015-06-24 11:57:24

标签: spring spring-mvc apache-commons-fileupload

我使用裁剪实用程序来调整图片大小,并将图像数据转换为Base64字符串。

    -----------------------------27138656916051
Content-Disposition: form-data; name="typePhoto"

string
-----------------------------27138656916051
Content-Disposition: form-data; name="imageData"

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAfZ0lEQVR4nO2deXAUZfrHn1xkwgyRBEi4hbjAci4gp4gIhAWKy3IXLFgwBYKAEeVeCCvrz4NlAZFFYEPA4JLIJQoChiMi54olhENANOEK1wKGM5AIOb6
/P1Ld9sz09Ez3+04I8HyqupLp6X6et3v6M9PHexAYhvEIPegCMExZhgVhGANYEIYxgAVhGANYEIYxgAVhGANYEIYxgAVhGANYEIYxgAVhGANKVZAuXbrAbrd7nMLDwxEVFYWGDRviL3
/5C/Lz8y3l6dGjh2EeXyYzhIWFwW63o3z58pbKq9CvX.....bytes

当我得到

@RequestParam(value = "imageData") String data \\"data:image/png;base64,iVBORw0KGgoA....bytes"

我已经将文件上传实现为Multipart File以将其存储在文件系统中。是否可以将从请求参数解码的字节转换为MultipartFile?

1 个答案:

答案 0 :(得分:0)

在ApplicationContext.xml中,您需要添加:

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <beans:property name="maxUploadSize" value="52428800"/>
    </beans:bean>

然后你需要一个这样的Controller方法:

  @RequestMapping(value = "/addattachment", method = RequestMethod.POST)
    public
    @ResponseBody
    String addAttachments(@RequestParam("attachments") MultipartFile[] multipartFiles) {

        if (multipartFiles != null && multipartFiles.length > 0) {
            for (MultipartFile multipartFile : multipartFiles) {
                try {
                    if (!(multipartFile.isEmpty())) {
                        String fileName = multipartFile.getOriginalFilename();
                        long fileSize = multipartFile.getSize();
                        byte[] bytes = multipartFile.getBytes();
                         // Call the save to DB or disk here.
                       }
                } catch (Exception e) {
                    return "failure";
                }
            }
        }
        return "done";
    }

如果您需要任何帮助,请知道。

另外,我刚才读到,你想要发送图像,那么你的控制器方法应该是这样的:

  @RequestMapping(value = "/addimage", method = RequestMethod.POST)
    public @ResponseBody String convertimagetopdf(@RequestBody String imagedat) {
//do stuff with image
}