SSM-文件上传
因为开发环境和线上环境系统不一样,所以需要区别环境
config.java
可以判断系统进行自动化的区别,我是手动去切换注释的
public class config {
//public static final String filePath = "E:\\nginx-1.16.1\\html\\uploadFile";//本地
public static final String filePath = "/usr/local/nginx/html/uploadFile/"; //线上
//public static final String fileUrl = "http://localhost/uploadFile/"; //本地
public static final String fileUrl = "http://xx.xx.xx.xx/uploadFile/"; //线上
}
工具
// util/uuid.java
public class uuid {
public static String getUuid(){
String uuid = UUID.randomUUID().toString();
//去掉“-”符号
return uuid.replaceAll("-", "");
}
}
上传文件
// util/UploadFile.java
@Controller
public class UploadFile {
@RequestMapping("/uploadFile")
@ResponseBody
public Map upload(@RequestParam("file") MultipartFile file, HttpServletRequest req) throws Exception, IOException {
return saveFile(file, req);
}
private Map saveFile(MultipartFile file, HttpServletRequest req) {
Map map = new HashMap();
// 判断文件是否为空
if (!file.isEmpty()) {
try {
String fileId = uuid.getUuid();
String fileName = file.getOriginalFilename();//1.jpg 获取上传文件的全名加后缀
map.put("fileId",fileId);
map.put("fileName",fileName);
//这是指定的绝对路径
String filePath = config.filePath;
String fileUrl = config.fileUrl;
File realPathFolder = new File(filePath);
if (!realPathFolder.exists()) {
realPathFolder.mkdir();
}
String newName = fileId + "_" + fileName;//创建一个新的文件名称 FilenameUtils.getExtension(name):获取文件后缀名
File f = new File(realPathFolder,newName);
map.put("newName", newName);
map.put("fileUrl",fileUrl);
map.put("url",fileUrl+newName);
map.put("code", 20000); //成功的固定字段
map.put("msg", "上传file成功");
file.transferTo(f);//将上传的文件存储到指定位置
} catch (Exception e) {
map.put("code", 0);
map.put("msg", "上传file失败");
e.printStackTrace();
}
} else {
map.put("msg", "上传file失败");
}
return map;
}
}
上传base64
// util/UpLoadBase64.java
@Controller
public class UpLoadBase64 {
@RequestMapping(value = "/uploadBase64", method = RequestMethod.POST)
@ResponseBody
public Map base64UpLoad(@RequestParam String file,@RequestParam String fileName,HttpServletRequest req, HttpServletResponse res) {
Map map = new HashMap();
try {
String dataPrix = "";
String data = "";
if (file == null || "".equals(file)) {
throw new Exception("上传数据为空");
} else {
String[] d = file.split("base64,"); //把base, 切换
if (d != null && d.length == 2) {
dataPrix = d[0];
data = d[1];
} else {
throw new Exception("上传失败,数据不合法");
}
}
String fileId = uuid.getUuid();
map.put("fileId", fileId);
map.put("fileName", fileName);
//这是指定的绝对路径
String filePath = config.filePath;
String fileUrl = config.fileUrl;
//因为BASE64Decoder的jar问题,此处使用spring框架提供的工具包
byte[] bs = Base64Utils.decodeFromString(data);
File realPathFolder = new File(filePath);
if (!realPathFolder.exists()) {
realPathFolder.mkdir();
}
String newName = fileId + '_' + fileName;//创建一个新的文件名称.后缀名
FileUtils.writeByteArrayToFile(new File(realPathFolder,newName), bs);
map.put("newName", newName);
map.put("fileUrl",fileUrl);
map.put("url",fileUrl+newName);
map.put("code", 20000); //成功的固定字段
map.put("msg", "上传base64成功");
} catch (Exception e) {
map.put("msg", "上传base64失败");
e.printStackTrace();
}
return map;
}
}
删除文件
// util/DeleteFile.java
@Controller
public class DeleteFile {
@RequestMapping("/deleteFile")
@ResponseBody //不写会默认返回当前路径!!
public Map deleteFile(@RequestParam("fileName") String fileName) throws Exception, IOException {
Map map = new HashMap();
File file = new File(filePath,fileName);
if(file.exists()){
file.delete();
map.put("code",20000);
map.put("msg","文件删除成功");
}else{
map.put("msg","文件不存在");
}
return map;
}
}
文件下载
// util/DownLoad.java
@Controller
public class DownLoad {
/*
* 下载方式一:
* ①获取前台要下载的文件名称
* ②设置响应类型
* ③设置下载页显示的文件名
* ④获取下载文件夹的绝对路径和文件名合并为File类型
* ⑤将文件复制到浏览器
*/
@RequestMapping("/download")
@ResponseBody
public void download(HttpServletRequest req, HttpServletResponse resp, String fileName) throws Exception {
String filePath = config.filePath;
//String realPath = req.getServletContext().getRealPath("/download");//获取下载文件的路径
File file = new File(filePath,fileName);//把下载文件构成一个文件处理 filename:前台传过来的文件名称
//设置响应类型 ==》 告诉浏览器当前是下载操作,我要下载东西
resp.setContentType("application/x-msdownload");
//设置下载时文件的显示类型(即文件名称-后缀) ex:txt为文本类型
resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
//下载文件:将一个路径下的文件数据转到一个输出流中,也就是把服务器文件通过流写(复制)到浏览器端
Files.copy(file.toPath(), resp.getOutputStream());//Files.copy(要下载的文件的路径,响应的输出流)
}
}
这些代码随便百度就有,还有上传多个文件的,自行百度
SSM-文件上传的更多相关文章
- SSM文件上传
**自己对于SSM文件上传的一些心得** 刚开始的时候也是在网上寻找一些简单的案例,可能我的这篇文章不是最好的,但是这些都是我自己慢慢的摸索以及自己的尝试的一些心得,希望对各位有所帮助. 其实文件的上 ...
- ssm文件上传下载比较详细的案例
背景:ssm框架 接下来,我会介绍单文件上传,下载,多文件的上传,下载,使用ajax进行文件的上传下载,和普通的表单提交的文件上传下载. 只要做项目,总是少不了文件的操作,好了废话不多说,直接上代码! ...
- SSM文件上传要点总结
文件的上传要点: 1.表单方面:enctype="multitype/form-data" 编码方式选择混编码 input 类型采用file 2.实体类一定要进行序列化,也就是im ...
- maven工程 java 实现文件上传 SSM ajax异步请求上传
java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...
- 回忆曾经的SSM框架实现文件上传
近期在使用springboot实现文件上传的功能,想到曾经用SSM做过这个功能,在这里记录一下过去实现的方式 maven添加文件上传所需的依赖 springMVC的配置文件配置一下文件上传 我实现的是 ...
- SSM + Android 网络文件上传下载
SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)
原文地址:https://blog.csdn.net/niceliusir/article/details/78453560 以下是jsp+servlet和SSM分别是如何实现文件上传的方法示例 两种 ...
- SSH,SSM框架文件上传
一.了解文件上传 1.1 什么是文件上传 将本地文件通过流的形式写到服务器上 1.2 文件上传的技术 JspSmartUpload: 其组件是应用jsp进行B/S程序开发过 ...
- ssm框架下实现文件上传
1.由于ssm框架是使用Maven进行管理的,文件上传所需要的jar包利用pom.xml进行添加,如下所示: <properties> <commons-fileupload.v ...
随机推荐
- Spring Boot RestApi 测试教程 Mock 的使用
测试 Spring Boot Web 的时候,我们需要用到 MockMvc,即系统伪造一个 mvc 环境.本章主要编写一个基于 RESTful API 正删改查操作的测试用例.本章最终测试用例运行结果 ...
- Java学习资源 - J2SE
java.lang包教程 Java集合类详解 Java回顾之集合 Java回顾之序列化 Java回顾之反射 深入理解Java:类加载机制及反射 Java 下高效的反射工具包 ReflectASM 使用 ...
- kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)
一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...
- 高级T-SQL进阶系列 (一)【上篇】:使用 CROSS JOIN 介绍高级T-SQL
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文连接:传送门 这是一个新进阶系列的第一篇文章,我们将浏览Transact-SQL(T-SQL)的更多高级特性.这个进阶系列将会包 ...
- Nginx 反向代理报400错误解决方法!
如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败,报400错误,解决办法: ...
- OPENTSDB: Request failed: Internal Server Error net.opentsdb.core.IllegalDataException
今天Opentsdb补传历史数据的时候,出现了如下的错误: Request failed: Internal Server Error net.opentsdb.core.IllegalDataExc ...
- T4 多文件生成说明
1.安装T4,自动生成文件 Manager.ttinclude <#@ assembly name="System.Core"#> <#@ assembly na ...
- CSS - 背景半透明
就一句话 background: rgba(0, 0, 0, .2); body { background-color: pink; } div { width: 200px; height: 200 ...
- [python] pygame安装与配置
参考 https://www.runoob.com/python/python-install.html https://blog.csdn.net/huayuhuan/article/details ...
- 函数返回值retrun
如果函数不写retrun,默认返回None. return多个对象,那么Python帮我们把这多个对象封装成一个元组返回. return 作用 结束函数.返回某个对象