springmvc上传下载

本文介绍使用SpringMVC实现文件上传的方法,包括设置表单、配置解析器及跨服务器文件传输,并解决了400错误及405 Method Not Allowed问题。

(1)form表单的enctype取值是:multipart/form-data,method取值是:post,提供一个文件选择域

(2)springmvc方式

  • 做表单
<h3>springmvc文件上传方式</h3>
<form action="user/fileUpload2" method="post" enctype="multipart/form-data">
    选择文件<input type="file" name="upload"/><br>
    <input type="submit" value="上传">
</form>
  • 配解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10485760"/>
</bean>

id="multipartResolver",id的名字必须是这个名字:multipartResolver

  • public String fileUpload2(HttpServletRequest request, MultipartFile upload)

MultipartFile upload的参数名必须与表单<input type="file" name="upload"/>name的名字一致

(3)跨服务器传文件

  • 启动两个tomcat,是两个真实的tomcat服务器
  • 导包
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-core</artifactId>
  <version>1.18.1</version>
</dependency>

<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.18.1</version>
</dependency>
  • 编程
@RequestMapping("/fileUpload3")
public String fileUpload3(MultipartFile upload) throws Exception {
    System.out.println("跨服务器springmvc文件上传。。。。。");

    String path = "http://localhost:9090/fileuploadserver/uploads";

    //说明是上传文件项,获取上传文件的名称
    String filename = upload.getOriginalFilename();

    //文件名称设置成UUID
    String uuid = UUID.randomUUID().toString().replace("-", "");

    filename = uuid + "_" + filename;

    Client client = Client.create();

    WebResource webResource = client.resource(path +"/" + filename);

    webResource.put(upload.getBytes());

    return "success";
}
  • 启动两个服务器

 

SpringMVC跨服务器传输文件出现400错误解决

答案很简单 ,接收文件的另一个服务器不支持中文,也就是说文件名不能写中文否则就会报400错误。

解决方案无非就是两种,让文件服务器支持utf-8编码或者将文件名变成英文。

SpringMVC跨服务器传输文件:returned a response status of 405 Method Not Allowed

在你的Tomact服务器安装目录下的conf/web.xml配置文件中加上:


 

<init-param>

<param-name>readonly</param-name>

<param-value>false</param-value>

</init-param>


 

<servlet>

<servlet-name>default</servlet-name>

<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

<init-param>

<param-name>readonly</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值