使用Spring MultipartFile和谷歌应用引擎上传文件

时间:2014-05-02 05:38:04

标签: java jsp google-app-engine spring-mvc multipartform-data

我一直在尝试使用MVC和Google App引擎上传文件。每次我收到错误,如

预期的MultipartHttpServletRequest:是否配置了MultipartResolver?

之后我推荐了两个教程来上传文件。每次流程转到控制器,但能够访问使用Spring MVC和Google App引擎在jsp文件中上传的MultipartFile文件。这两个引用是

http://alasdoo.com/2010/10/how-to-upload-a-file-with-spring-mvc-3-and-google-app-engine/

https://code.google.com/p/gmultipart/

所以任何人都可以指导我解决问题的参考文献中的错误。

1 个答案:

答案 0 :(得分:5)

以下方法将返回您需要在其上发布文件的回调网址。

上传网址方法

@RequestMapping(value = "/uploadurl", method = RequestMethod.GET)
public String getImageUploadUrl() {
    modelMap.addAttribute('uploadUrl',blobstoreService.createUploadUrl("/imageupload));
    return "upload";
}

以下是您将嵌入代码的JSP片段。我使用 JSTL 将网址放在表单标记中。

JSP页面

<form action="${uploadUrl}" method="POST" enctype="multipart/form-data">
    <input type="file" name="myFile" multiple="multiple" />
</form>

上传处理程序方法

@ResponseBody
@RequestMapping(value = "/imageupload", method = RequestMethod.POST)
public void getUploadedImagesUrls(HttpServletRequest request){
    Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(request);
    List<BlobKey> blobKeys = blobs.get("myFile[]");
    if (blobKeys == null) {
        return null;
    } else {
        for(BlobKey blobKey : blobKeys){
            // ImagesService services = ImagesServiceFactory.getImagesService();
            // ServingUrlOptions serve = ServingUrlOptions.Builder.withBlobKey(blobKey);
            // String imageUrl = services.getServingUrl(serve);
            BlobInfoFactory blobInfoFactory = new BlobInfoFactory();
            BlobInfo info = blobInfoFactory.loadBlobInfo(blobKey);
            System.out.println("Image URL : "+imageUrl);
            System.out.println("Image FileName : "+info.getFilename());
        }
    }
}