SpringMVC实现文件上传【传统方式上传、跨服务器上传】(1)
创始人
2025-01-19 03:04:11
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面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

相关内容

热门资讯

详细开挂!wepoker开辅助... 《详细开挂!wepoker开辅助能查到吗,卡丁互娱辅助器,开挂(透视)辅助软件(详细教程)》 卡丁互...
关于辅助!wepoker好友助... 关于辅助!wepoker好友助力码,浙江游戏厅辅助器,开挂(透视)辅助软件(有挂方法);浙江游戏厅辅...
通报开挂!wepoker透视脚... 通报开挂!wepoker透视脚本免费使用视频,欢乐达人暗宝辅助,开挂(透视)辅助安装(有挂透明挂);...
教会辅助!wepoker脚本,... 教会辅助!wepoker脚本,兴动互娱免费辅助,开挂(透视)辅助脚本(有挂神器);小薇(透视辅助)致...
分享辅助!德普之星怎么开辅助,... 分享辅助!德普之星怎么开辅助,杭州边锋辅助软件,开挂(透视)辅助插件(有挂方法);1、不需要AI权限...
必看辅助!德普之星辅助器怎么用... 必看辅助!德普之星辅助器怎么用,陕西辅助,开挂(透视)辅助安装(今日头条);是一款可以让一直输的玩家...
传授辅助!wepoker辅助是... 传授辅助!wepoker辅助是真的吗,边锋老友填大坑辅助,开挂(透视)辅助软件(有挂规律);1、很好...
通报辅助!wepoker破解器... 通报辅助!wepoker破解器,阿拉游戏中心辅助软件免费下载,开挂(透视)辅助脚本(详细教程);1、...
传授开挂!wepoker买脚本... 传授开挂!wepoker买脚本靠谱吗,心悦游戏辅助,开挂(透视)辅助脚本(有人有挂);心悦游戏辅助软...
正版开挂!pokemmo手机脚... 正版开挂!pokemmo手机脚本辅助器,新星游辅助真的假的,开挂(透视)辅助软件(今日头条);超受欢...