java spring上传文件到服务器_系列五、springMVC实现文件上传和跨服务器上传文件...

本文介绍了如何使用SpringMVC实现文件上传,包括传统的文件上传方式和SpringMVC简化后的上传方法。同时,还详细讲解了如何实现跨服务器文件上传,通过创建客户端连接目标服务器,将文件上传到远程服务器的流程。
摘要由CSDN通过智能技术生成

一、实现文件上传

项目目录如下所示

4268a3886148e26fda3fd40fd709497c.png

一、导入依赖和配置springmvc.xml、web.xml

1e4711fa07e3f4d82921a2217fa12475.png

这个两个jar包是实现文件上传必须要导入的包

src/main/java

**/*.xml

src/main/resources

**/*.properties

**/*.xml

5.0.2.RELEASE

UTF-8

1.8

1.8

org.springframework

spring-context

${spring.version}

org.springframework

spring-web

${spring.version}

org.springframework

spring-webmvc

${spring.version}

javax.servlet

servlet-api

2.5

provided

javax.servlet.jsp

jsp-api

2.0

provided

org.springframework

spring-core

${spring.version}

com.fasterxml.jackson.core

jackson-databind

2.9.0

com.fasterxml.jackson.core

jackson-core

2.9.0

com.fasterxml.jackson.core

jackson-annotations

2.9.0

commons-fileupload

commons-fileupload

1.3.1

commons-io

commons-io

2.4

com.sun.jersey

jersey-core

1.18.1

com.sun.jersey

jersey-client

1.18.1

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

二、编写controller层 代码

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

dispatcherServlet

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc.xml

1

dispatcherServlet

/

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

characterEncodingFilter

/*

package com.cc.controller;

import com.sun.jersey.api.client.Client;

import com.sun.jersey.api.client.WebResource;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.util.List;

import java.util.UUID;

@Controller

@RequestMapping("/student")

public class StudentController {

/**

* 文件上传,以前传统的方式

* @return

*/

@RequestMapping("fileupload1")

public String fileupload1(HttpServletRequest request) throws Exception {

System.out.println("fileupload is success.....");

//使用fileupload组件实现文件上传

//指定文件上传的位置

String path=request.getSession().getServletContext().getRealPath("/upload/");

//判断该路径是否存在

File file=new File(path);

if(!file.exists()){

//不存在就创建一个路径

file.mkdirs();

}

//解析request对象,获取文件上传项

DiskFileItemFactory factory=new DiskFileItemFactory();

ServletFileUpload upload=new ServletFileUpload(factory);

//解析request

List item =upload.parseRequest(request);

//判断当前的item对象是否为上传文件项

for (FileItem items :item)

if (items.isFormField()) {

//说明是普通表单项

} else {

//说明上传文件项

//获取上传文件的名称

String filename = items.getName();

//把文件名称设置成唯一值uuid

String uuid=UUID.randomUUID().toString().replace("-"," ");

filename=uuid+"_"+filename;

//完成上传文件

items.write(new File(path,filename));

//删除临时文件

items.delete();

}

return "success";

}

/**

* 文件上传,springmvc方式

* @return

*/

@RequestMapping("fileupload2")

public String fileupload2(HttpServletRequest request, MultipartFile upload) throws Exception {

System.out.println("fileupload is success.....");

//指定文件上传的位置

String path=request.getSession().getServletContext().getRealPath("/upload/");

//判断该路径是否存在

File file=new File(path);

if(!file.exists()){

//不存在就创建一个路径

file.mkdirs();

}

//说明上传文件项

//获取上传文件的名称

String filename=upload.getOriginalFilename();

//把文件名称设置成唯一值uuid

String uuid=UUID.randomUUID().toString().replace("-","");

filename=uuid+"_"+filename;

//完成上传文件

upload.transferTo(new File(path,filename));

return "success";

}

}

}

springmvc实现文件上传帮我们省了不少事,不用我们自己再去编写输入输出流,

三、编写jsp测试代码

Created by IntelliJ IDEA.

User: Administrator

Date: 2019/5/30

Time: 15:59

To change this template use File | Settings | File Templates.

--%>

文件上传

选择文件:

选择文件:

这里一共测试了两种上传文件的方式,去相关发布目录找上传的图片上传成功

7509903369676a58dff11a99a164b7a3.png

6829697fe2d5747fcbe088e28757e878.png

二、 springmvc  跨服务器方式的文件上传

在实际开发中,我们会有很多处理不同功能的服务器。例如:

应用服务器:负责部署我们的应用

数据库服务器:运行我们的数据库

缓存和消息服务器:负责处理大并发访问的缓存和消息

文件服务器:负责存储用户上传文件的服务器。

09a5c705d5ae61d78c490b4e08a24059.png

项目目录和实现步骤如下,实现fileupload文件上传到service服务器上

6ed149e7d523a73711e8cbf0d4bfd87d.png

①准备两个 tomcat  服务器 ,并创建一个用于存放图片的 web  工程

3df5f006e0c3cec4011d66343c88c993.png

②导入需要实现服务器的jar包

com.sun.jersey

jersey-core

1.18.1

com.sun.jersey

jersey-client

1.18.1

③view层页面代码

选择文件:

④controller层页面代码

/**

* 跨服务器文件上传

* @return

*/

@RequestMapping("/fileupload3")

public String fileuoload3(MultipartFile upload) throws Exception {

System.out.println("service id doing...");

// 定义上传文件服务器路径

String path = "http://localhost:9090/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";

}

6829697fe2d5747fcbe088e28757e878.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值