使用Restful接口上传文件

时间:2012-09-09 16:03:18

标签: java spring rest

我正在尝试将文件(如图像文件)上传到Restful服务器,如下所示:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @sample.jpg http://localhost:3000/test

但是,我的Restful服务器资源似乎没有处理该请求。

  • 如何将文件(小型和大型)上传到Spring Web资源
  • “附件”类型上传与通过简单的表单上传上传完全不同吗?
  • 如果内容类型:multipart/form-data; boundary=...如何获取实际内容类型,例如:“image / jpeg”等。

这是我的网络资源的代码段:

          try 
          {
            ServletFileUpload upload = new ServletFileUpload();
            FileItemIterator fileIterator = upload.getItemIterator(req);
            while (fileIterator.hasNext()) {
                FileItemStream item = fileIterator.next();
                byte[] content = ByteStreams.toByteArray(item.openStream());
            }
             ...
          }

我关注的是代码可以支持的客户端上传类型,我使用Rest Console Chrome插件并上传符合此代码的附件,但上面的cURL代码无效。

此外,可以从FileItemIterator检索的HttpServletRequest是什么?

以下是我的restful Web服务资源的完整代码:http://bit.ly/QwTOLw

1 个答案:

答案 0 :(得分:3)

您可能需要查看Spring's multipart (file upload) support上的Spring手册部分。确保在上下文中声明了MultipartResolver bean,并考虑将该文件映射为表单支持对象中的MultipartFile,这样就可以让Spring句柄解析/读取多部分数据本身(而不是尝试自己解析FileItemIterator,ServletFileUpload等。