SpringMVC 学习笔记 Part6
1. 服务器划分的目的
在实际开发中,我们会有很多处理不同功能的服务器。例如:
分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。
2. 跨服务器文件上传
前置工作:
我们需要在文件接受服务器的 apache-tomcat-8.5.69\conf 目录下找到 web.xml,加入下列内容。加入此行的含义是:接收文件的目标服务器可以支持写入操作。
<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>
第一步:导入开发需要的jar包坐标。
<!-- 文件上传相关jar包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- 处理跨服文件上传的jar包 -->
<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>
第二步:编写文件上传的 jsp 页面。
<form action="user/myupload" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value="上传"/>
</form>
第三步:创建 CommonsMultipartResolver 进 IoC 容器。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"/>
</bean>
第四步:编写控制器方法的代码。
// 定义图片服务器的请求路径
public static final String FILESERVERURL = "http://localhost:9090/myspringmvc/uploads/";
@RequestMapping("/myupload")
public String myUpload(MultipartFile upload) throws Exception {
// 获取到上传文件的名称
String filename = upload.getOriginalFilename();
String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
// 把文件的名称唯一化
filename = uuid+"_"+filename;
// 向图片服务器上传文件
// 创建 sun 公司提供的 jersey 包中的客户端对象
Client client = Client.create();
// 连接图片服务器
WebResource webResource = client.resource(FILESERVERURL+filename);
// 上传文件
webResource.put(upload.getBytes());
return "success";
}
3. 常见错误解决办法
returned a response status of 400 :文件名请改成英文名。
returned a response status of 403 :上文所说的前置工作没有做好,需要在tomcat的web.xml里加入readonly=false。
returned a response status of 409 :接收服务器没有FILESERVERURL请求路径上的相关文件夹,这时我们需要打开部署的target包手动添加uploads文件夹(添加到target包里与WEB-INF、META-INF、index.jsp同级的那个目录里),在idea添加是没有用的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84488.html