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面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

相关内容

热门资讯

代打黑科技!云扑克有没有辅助软... 代打黑科技!云扑克有没有辅助软件(透视)太坑了存在有挂(详细教程黑科技介绍)1、游戏颠覆性的策略玩法...
黑科技线上"德州软件... 黑科技线上"德州软件工具!外挂透明挂辅助神器(黑科技)解密教程"其实存在有挂1、全新机制【德州软件工...
黑科技实锤!wepoke德州软... 黑科技实锤!wepoke德州软件(we辅助poker)外挂黑科技辅助机制(普及知识黑科技技巧);1分...
数据黑科技!德扑ai软件(透视... 数据黑科技!德扑ai软件(透视)太坑了真的有挂(详细教程黑科技方法)一、德扑ai软件软件透明挂的定义...
黑科技辅助"wpk的... 黑科技辅助"wpk的发牌有规律吗!外挂透明挂辅助系统(黑科技)德州论坛"都是是真的有挂所有人都在同一...
黑科技存在!epoker外挂(... 黑科技存在!epoker外挂(wepower)外挂透视辅助器(记者揭秘黑科技教程)1、很好的工具软件...
app黑科技!gg扑克辅助(透... app黑科技!gg扑克辅助(透视)太坑了真的是有挂(详细教程黑科技细节)1、gg扑克辅助透视辅助简单...
黑科技游戏"微扑克有... 黑科技游戏"微扑克有挂吗!外挂透明挂辅助app(黑科技)解密教程"其实真的是有挂1、每一步都需要思考...
黑科技软件!微扑克这软件有问题... 您好,微扑克这软件有问题吗这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
游戏黑科技!微扑克软件开发(透... 游戏黑科技!微扑克软件开发(透视)太坑了真的是有挂(扑克教程黑科技教程);1、微扑克软件开发系统规律...