使用spring3和rest cxf将MultipartFile设置为Null

时间:2014-09-16 12:42:31

标签: rest file-upload jax-rs multipartform-data spring-3

我正在尝试上传xls。 我在下面写了Rest Web服务

@POST
@Path("/ui/uploadDocument")
@Consumes("multipart/form-data")
public void uploadDocument(@RequestParam("file") MultipartFile file )

我还在下面添加了spring application context config:

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

现在我尝试使用Chrome rest客户端和简单的html代码运行上面的代码,如下所示:

    <form method="POST" action="http://localhost/my-core/eCom/v1/catalogue/ui/uploadDocument" enctype="multipart/form-data">
    File to upload: <input type="file" name="file" id="file"><br /> 
    Name: <input type="text" name="name"><br /> <br /> 
    <input type="submit" value="Upload"> Press here to upload the file!
</form>

我从休息客户端或通过html代码调用它所遇到的问题是,尽管已成功调用其余调用但文件(MultipartFile)设置为null。 我错过了上面的任何设置吗?

我们正在使用spring 3.0,对于休息支持我们正在使用apache jaxrs ... 任何人的帮助表示赞赏...

1 个答案:

答案 0 :(得分:0)

我终于通过jax rs方式解决了这个问题。

以下是代码:

@POST
@Path("/ui/uploadDocument")
@Consumes("multipart/form-data")
public Response uploadDocument(List<Attachment> attachments, @Context HttpServletRequest request) {   
     for (Attachment attachment : attachments) {
        DataHandler handler = attachment.getDataHandler();
        try {
     //            Creates a workbook object from the uploaded excelfile
            HSSFWorkbook workbook = new HSSFWorkbook(handler.getInputStream());
            HSSFSheet worksheet = workbook.getSheetAt(0);
            int i = 1;
            while (i <= worksheet.getLastRowNum()) {
                HSSFRow row = worksheet.getRow(i++);
                CatDefault catDefault = new CatDefault();
                catDefault.setCatId((long) row.getCell(0).getNumericCellValue());
             }
        }
     }

用于调用的HTML代码如下:

<form action="http://localhost/cat-core/eCom/v1/catalogue/ui/uploadDocument" method="post" enctype="multipart/form-data">
    <p>
        Select a file : <input type="file" name="uploadedFile" size="50" />
    </p>
    <input type="submit" value="Upload It" />
</form>

链接CXF很有用。