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、进入到德普之星是否有挂之后,能看到...
玩家必看教程!德普之星辅助挂多... 玩家必看教程!德普之星辅助挂多功能透视工具,好像真的有挂(真的有挂)1)德普之星辅助插件:进一步探索...
玩家必备教程!德扑圈辅助挂多功... 玩家必备教程!德扑圈辅助挂多功能透视工具,一直真的是有挂(果真有挂)1、完成德扑圈有辅助插件,帮助玩...
分享给玩家!德普之星辅助挂多功... 分享给玩家!德普之星辅助挂多功能透视工具,一直存在有挂(有挂技巧)德普之星是不是有人用挂微扑克wpk...
实测揭晓!德扑圈辅助挂多功能透... 实测揭晓!德扑圈辅助挂多功能透视工具,总是是真的有挂(详细教程)1、超多福利:超高返利,海量正版游戏...
玩家必备科技!红龙poker辅... 玩家必备科技!红龙poker辅助挂多功能透视工具,果然真的有挂(有挂秘籍)1)红龙poker免费钻石...
盘点一款!智星德州扑克辅助挂多... 盘点一款!智星德州扑克辅助挂多功能透视工具,真是真的有挂(存在有挂)1、智星德州扑克脚本辅助下载、智...
记者发布!智星菠萝德州辅助挂多... 记者发布!智星菠萝德州辅助挂多功能透视工具,本来存在有挂(今日头条)1、上手简单,内置详细流程视频教...
科技通报!德扑之星辅助挂多功能... 科技通报!德扑之星辅助挂多功能透视工具,一贯是有挂(竟然有挂)德扑之星辅助器是一种具有地方特色的麻将...