SpringMVC实现文件上传【传统方式上传、跨服务器上传】(1)

avatar
作者
筋斗云
阅读量:0

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • Keafmd

  • @ClassName: UserController

  • @Description:

  • @author: 牛哄哄的柯南

  • @date: 2021-01-30 15:07

*/

@Controller

@RequestMapping(“/user”)

public class UserController {

/**

  • 文件上传

  • @return

*/

@RequestMapping(“/filupload1”)

public String fileupload1(HttpServletRequest request) throws Exception {

System.out.println(“文件上传”);

//准备使用fileupload组件完成文件上传

//上传的位置

String path =request.getSession().getServletContext().getRealPath(“/uploads/”);

//System.out.println(path);

//判断该路径是否存在

File file = new File(path);

if(!file.exists()){

//创建文件夹

file.mkdirs();

}

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

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

//开始解析request

List items = upload.parseRequest(request);

//遍历

for (FileItem item : items) {

//进行判断,当前item对象是否是上传文件项

if(item.isFormField()){

//说明普通表单项

}else{

//说明上传文件项

//获取到上传文件的名称

String filename = item.getName();

//把文件名称设置为唯一值

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

filename = uuid+filename;

//完成文件上传

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

//删除临时文件

item.delete();

}

}

return “success”;

}

/**

  • springmvc方式上传文件

  • @param request

  • @param upload

  • @return

  • @throws Exception

*/

@RequestMapping(“/filupload2”)

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

System.out.println(“SpringMVC文件上传”);

//准备使用fileupload组件完成文件上传

//上传的位置

String path =request.getSession().getServletContext().getRealPath(“/uploads/”);

//System.out.println(path);

//判断该路径是否存在

File file = new File(path);

if(!file.exists()){

//创建文件夹

file.mkdirs();

}

//说明上传文件项

//获取到上传文件的名称

String filename = upload.getOriginalFilename();

//把文件名称设置为唯一值

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

filename = uuid+filename;

//完成文件上传

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

return “success”;

}

}

在这里插入图片描述

选择文件上传(选择一张图片):

在这里插入图片描述

运行结果:

传统方式与SpringMVC方式运行结果一样,相比于传统的方式,SpringMVC方式更加方便。

在这里插入图片描述

打开文件位置(项目的target目录下):F:\java_workspace\springmvc_day02_02_fileupload\target\springmvc_day02_02_fileupload\uploads,这里就是我们上传的文件了。

在这里插入图片描述

跨服务器上传文件

==================================================================

注意这里就需要两个项目了,另外一个项目启动tomcat服务器作为图片服务器,所以我们需要新建立一个项目。

1、首先我们需要搭建个图片服务器(建立一个新的项目springmvc_day02_fileuploadserver配置tomcat如下)【不需要些其他代码,只需要配置tomcat即可】。

在这里插入图片描述

注意我们需要提前在这个图片服务器中的target目录下创建个uploads文件夹,用于向图片服务器存放图片时间,存放图片使用。我的路径是F:\java_workspace\springmvc_day02_fileuploadserver\target\springmvc_day02_fileuploadserver\uploads

下面的操作都是对于非图片服务器的那个项目操作的。

2、实现SpringMVC跨服务器方式文件上传需要导入开发需要的jar包。

com.sun.jersey

jersey-core

1.19.1

com.sun.jersey

jersey-client

1.19.1

编写文件上传的JSP页面

<%–

Created by IntelliJ IDEA.

User: Keafmd

Date: 2021/1/30

Time: 15:06

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

–%>

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

Title

跨服务器文件上传

选择文件:

UserController类:

package com.Keafmd.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.FileUploadException;

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 javax.servlet.http.HttpServletResponse;

import java.io.File;

import java.util.List;

import java.util.UUID;

/**

  • Keafmd

  • @ClassName: UserController

  • @Description:

  • @author: 牛哄哄的柯南

  • @date: 2021-01-30 15:07

*/

@Controller

@RequestMapping(“/user”)

public class UserController {

/**

  • 跨服务器文件上传

  • @throws Exception

*/

@RequestMapping(“/filupload3”)

public String fileupload3(MultipartFile upload) throws Exception {

System.out.println(“跨服务器文件上传”);

//定义上传服务器的路径

String path = “http://localhost:9090/fileuploadserver/uploads/”;

//说明上传文件项

//获取到上传文件的名称

String filename = upload.getOriginalFilename();

//把文件名称设置为唯一值

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

filename = uuid+filename;

//完成文件上传 ,跨服务器上传

//创建客户端的对象

Client client = Client.create();

//和图片服务器连接

WebResource resource = client.resource(path + filename);

//上传图片

resource.put(upload.getBytes());

return “success”;

}

}

3、同时启动两个项目的tomcat服务器。

选择文件上传

在这里插入图片描述

运行结果:

在这里插入图片描述

我们打开作为图片服务器的那个项目的target目录找到uploads目录F:\java_workspace\springmvc_day02_fileuploadserver\target\springmvc_day02_fileuploadserver\uploads,就可以看到跨服务器上传来的图片了。

在这里插入图片描述

可能遇到的问题

=================================================================

解决办法:

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
65743)]

Redis面试专题

[外链图片转存中…(img-YY5nuAMo-1714762665743)]

Spring Cloud面试专题

[外链图片转存中…(img-UM0uz4j6-1714762665743)]

SpringBoot面试专题

[外链图片转存中…(img-p9L3RTGg-1714762665744)]

zookeeper面试专题

[外链图片转存中…(img-k2V1PLSW-1714762665744)]

常见面试算法题汇总专题

[外链图片转存中…(img-hfN9D9rS-1714762665744)]

计算机网络基础专题

[外链图片转存中…(img-q6jNQeNp-1714762665744)]

设计模式专题

[外链图片转存中…(img-JweawqwY-1714762665744)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!