@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/uploadFile")
public POSResponse singleSave(@FormDataParam("file") MultipartFile file) {
Response response = new Response();
String fileName = null;
if (!file.isEmpty()) {
try {
fileName = file.getOriginalFilename();
byte[] bytes = file.getBytes();
BufferedOutputStream buffStream = new BufferedOutputStream(new FileOutputStream(new File("d:\\" + fileName)));
buffStream.write(bytes);
buffStream.close();
} catch (Exception e) {
}
} else {
}
return response;
}
当我点击这个api然后我收到了错误" 415:不支持的媒体类型" 这意味着不支持header.I想要将文件从ARC加载到控制器。
和我的控制台:
Java类org.springframework.web.multipart.MultipartFile的消息体阅读器,以及Java类型接口org.springframework.web.multipart.MultipartFile和MIME媒体类型multipart / form-data; boundary = ----找不到WebKitFormBoundaryP1d7Atv9FO9wU301。 与MIME媒体类型兼容的已注册邮件正文阅读器是: / - > com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider com.sun.jersey.core.impl.provider.entity.StringProvider com.sun.jersey.core.impl.provider.entity.ByteArrayProvider com.sun.jersey.core.impl.provider.entity.FileProvider com.sun.jersey.core.impl.provider.entity.InputStreamProvider com.sun.jersey.core.impl.provider.entity.DataSourceProvider
我在pom.xml文件中添加了一些maven依赖。
我的pom文件:
<!-- multipart file dependency -->
<dependency>
<groupId>org.jvnet</groupId>
<artifactId>mimepull</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.jvnet.mimepull</groupId>
<artifactId>mimepull</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.17.1</version>
</dependency>
答案 0 :(得分:0)
我不确定您编写的代码,但我是如何在spring-mvc中完成的
使用案例:上传图片
在我们的Web应用程序的上下文配置文件中添加bean定义
CommonsMultipartResolver的(DispatcherServlet-context.xml),
如下:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000"/>
向pom.xml添加依赖项 输入Group Id作为commons-fileupload,Artifact Id作为commons-fileupload,Version作为1.2.2;选择Scope作为编译;然后单击“确定”按钮。
同样,再添加一个Group Id依赖项作为org.apache.commons,Artifact Id as commons-io,Version as 1.3.2;选择Scope作为编译;单击确定 按钮;并保存pom.xml文件
添加对
的引用
org.springframework.web.multipart.MultipartFile
java类中相应的setter和getter将文件定义为属性,如下所示:
@JsonIgnore
private MultipartFile productImage;
@XmlTransient
public MultipartFile getProductImage() {
return productImage;
}
public void setProductImage(MultipartFile productImage) {
this.productImage = productImage;
}
在要上传文件的jsp中,使用以下标记
将表单标签中的enctype属性设置为multipart / form-data为 在jsp中跟随
注意:我使用的是spring form标记库
<form:form modelAttribute="newProduct" class="form-horizontal" enctype="multipart/form-data">
将以下代码添加到控制器
public String processAddNewProductForm(@ModelAttribute("newProduct") @Valid Product productToBeAdded, BindingResult result, HttpServletRequest request) {
if(result.hasErrors()) {
return "addProduct";
}
MultipartFile productImage = productToBeAdded.getProductImage();
String rootDirectory = request.getSession().getServletContext().getRealPath("/");
if (productImage!=null && !productImage.isEmpty()) {
try {
productImage.transferTo(new File(rootDirectory+"resources\\images\\"+productToBeAdded.getProductId() + ".png"));
} catch (Exception e) {
throw new RuntimeException("Product Image saving failed", e);
}
}
productService.addProduct(productToBeAdded);
return "redirect:/products";
}
****先决条件****
弹簧项目已正确设置,接线已完成
很少的注释和代码行特定于我的项目,可能并不完全相关