SpringMVC实现文件上传【传统方式上传、跨服务器上传,Java开发知识点

avatar
作者
筋斗云
阅读量:0

传统方式文件上传

选择文件:

SpringMVC方式文件上传

选择文件:

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 {

/**

  • 文件上传

  • @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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

53874)]

[外链图片转存中…(img-anSEjI2q-1712766853874)]

[外链图片转存中…(img-fiHUrrvO-1712766853874)]

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-HEGRdEbU-1712766853875)]

广告一刻

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