文件上传——Spring MVC跨服务器
-
-
form表单的enctype取值必须是multipart/form-data。enctype的功能是请求正文的类型
-
method必须是post
-
需要有<input type="file" />标签
-
使用commons-fileupload组件实现文件,需要导入该组件相应的支撑jar包
-
commons-fileupload-1.3.1.jar
-
commons-io-2.4.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>
<form action="user/upload" method="post" enctype="multipart/form-data"> <input type="file" name="avatar" /> <input type="submit" value="上传" /> </form>
-
导入sun公司提供的jar包
<!-- 跨服务器上传文件的jar包 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18.1</version> </dependency>
-
搭建一个图片服务器,简单来说就是再创建一个项目,将这个项目的HTTP port和JMX port端口都改一下就可以了
-
如果出现这样的错误:PUT ***************** returned a response status of 404 Not Found ,说明需要修改tomcat服务器的web.xml主配置文件了(不是项目目录下的web.xml),在配置文件中添加代码即可
<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param>
-
如果出现这样的错误:PUT **************** returned a response status of 409 Conflict,说明图片服务器缺少文件目录,这个时候是在项目目录的target下的项目目录下手动创建文件保存的目录即可。
-
控制器方法的参数名称必须和表单上文件的input标签的name值相同
import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; import org.springframework.web.multipart.MultipartFile; import java.util.UUID @Controller @ResquestMapping(value="user") public class UserController{ @RequestMapping(value="upload") public String upload(MultipartFile avatar) throws Exception{ //指定图片保存的服务器地址 String path = "http://127.0.0.1:8081/uploads"; String filename = avatar.getOriginalFilename(); String uuid = UUID.randomUUID().toString().replace("-", ""); filename = uuid+"_"+filename; //创建客户端对象 Client client = Client.create(); //连接图片服务器 WenResource webResource = client.resource(path+filename); //上传文件 webResource.put(avatar.getBytes()); return "user"; } }
-