《一线大厂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” %>
跨服务器文件上传
选择文件:
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面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
《一线大厂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面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!