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智能辅助插件(透视)外挂透视辅助第九(其实是有挂);1、下载好wepok...
一分钟了解!川南休闲辅助,闲逸... 一分钟了解!川南休闲辅助,闲逸辅助插件(详细辅助普及教程);是一款可以让一直输的玩家,快速成为一个“...
第2分钟了解!拱趴大菠萝万能辅... 第2分钟了解!拱趴大菠萝万能辅助器(透视)外挂透视辅助第2(其实有挂);1.拱趴大菠萝万能辅助器 a...
专业讨论!赣牌圈小程序辅助器,... 专业讨论!赣牌圈小程序辅助器,河洛杠次怎么提高胜率(详细辅助扑克教程)(1)专业讨论!赣牌圈小程序辅...
一分钟了解!wepoker底牌... 一分钟了解!wepoker底牌透视脚本(透视)外挂透视辅助一(竟然是真的有挂);1、wepoker底...
一分钟教你!中至余干有挂吗,广... 一分钟教你!中至余干有挂吗,广西老友辅助(详细辅助攻略教程)中至余干有挂吗辅助器中分为三种模型:中至...
教程攻略!爱来510k辅助器,... 教程攻略!爱来510k辅助器,福建兄弟十三水辅助工具(详细辅助可靠技巧)您好,福建兄弟十三水辅助工具...
第4分钟了解!哈糖大菠萝破解器... 第4分钟了解!哈糖大菠萝破解器(透视)外挂透视辅助第4(都是是有挂)1、哈糖大菠萝破解器ai辅助优化...
十分钟了解!wepoker高级... 十分钟了解!wepoker高级辅助(透视)外挂透视辅助十(确实有挂)1、wepoker高级辅助系统规...
实测揭晓!陕麻圈脚本辅助,闲逸... 实测揭晓!陕麻圈脚本辅助,闲逸辅助app下载(详细辅助透明挂教程)是一款可以让一直输的玩家,快速成为...