/**
* 各种文件上传与判断
* types 文件类型(1图片 2视频 3文件)
*/
@RequestMapping(method = RequestMethod.POST, path = "/uploadFile")
@ResponseBody
public Object uploadFile(@RequestPart("file") MultipartFile file, Integer types) {
if (ToolUtil.isOneEmpty(file, types)) {
return ResultUtil.paramError();
}
String name = file.getOriginalFilename();
String[] fileNames = name.split("\\.");
String suffix = fileNames[fileNames.length - 1]; Boolean is = false;
if (1 == types) {
is = validateImager(suffix);
} else if (2 == types) {
is = validateVideo(suffix);
} else if (3 == types) {
is = validateFile(suffix);
}
if (!is) {
return ResultUtil.error(1, "上传文件格式错误!");
} String fileName = UUID.randomUUID().toString() + "." + suffix;
try {
String fileSavePath = guns.getFileUploadPath();
file.transferTo(new File(fileSavePath + fileName));
} catch (Exception e) {
throw new GunsException(BizExceptionEnum.UPLOAD_ERROR);
}
Map<String, Object> data = new HashMap<>();
data.put("url", guns.getProjPath() + "/file/" + fileName);
data.put("fileName", fileName);
return ResultUtil.success(data);
} //验证上传文件(图片)
public Boolean validateImager(String suffix) {
List<String> suffixList = Arrays.asList("jpg", "png", "gif", "jpeg", "bmp");
//判断后缀格式是否正确
if (suffixList.contains(suffix)) {
return true;
} else {
return false;
}
} //验证上传文件(视频)
public Boolean validateVideo(String suffix) {
List<String> suffixList = Arrays.asList("avi", "wmv", "mpeg", "mp4", "mov", "mkv", "flv", "f4v", "m4v", "rmvb", "rm",
"3gp", "dat", "ts", "mts", "vob");
//判断后缀格式是否正确
if (suffixList.contains(suffix)) {
return true;
} else {
return false;
}
} //验证上传文件(文件)
public Boolean validateFile(String suffix) {
List<String> suffixList = Arrays.asList("css", "js", "txt");
//判断后缀格式是否正确
if (suffixList.contains(suffix)) {
return true;
} else {
return false;
}
}
/**
* 读取文件内容
*/
@RequestMapping("/{fileId:.+}")
public void renderPicture(@PathVariable("fileId") String fileId, HttpServletResponse response) {
String path = guns.getFileUploadPath() + fileId;
try {
byte[] bytes = FileUtil.toByteArray(path);
response.getOutputStream().write(bytes);//有值返回参数
} catch (Exception e) {
//如果找不到图片就返回一个默认图片
try {
response.sendRedirect("/static/imager/0.jsp");//文件不存在默认加载文件
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
												

JAVA文件的上传与访问的更多相关文章

  1. java文件断点续传上传下载解决方案

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  2. java 文件的上传和下载

    主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...

  3. java文件夹上传下载控件分享

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在JAVA.MyEclipse环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下 ...

  4. java文件分片上传,断点续传

    百度的webUploader的前端开源插件实现的大文件分片上传功能 前端部分 前端页面代码如下,只需要修改自己的文件上传地址接口地址: <!DOCTYPE html> <html l ...

  5. linux上搭建nginx+ftp,实现文件的上传与访问

    ftp服务器搭建 1.新建用户ftpuser并指定主目录为/home/ftpuser (注意:这个目录是后面存储和读取文件的目录) <!--创建用户并指定主目录--> useradd -d ...

  6. java文件的上传

    文件的上传和下载在web应用中是非常常用,也是非常有用的功能.  例如:发送电子邮件时可以同过上传附件发送文件,OA系统中可以通过上传文件来提交公文,社交网站通过上传图片来自定义头像等等.  例如:下 ...

  7. Java 文件本地上传、下载和预览的实现

    以下方法为通用版本 实测图片和pdf 都没有问题 上传方法需要前端配合post请求 ,下载前端用a标签就可以,预览 前端使用ifrme标签   ,就可以实现基本功能... 1.文件本地上传 publi ...

  8. java 下载文件的两种方式和java文件的上传

    一:以网络的方式下载文件 try { // path是指欲下载的文件的路径. File file = new File(path); // 以流的形式下载文件. InputStream fis = n ...

  9. java文件夹上传下载组件

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

随机推荐

  1. js中点与方括号及for...in

    中括号运算符总是能代替点运算符.但点运算符却不一定能全部代替中括号运算符. 当用中括号代替点时,属性名需加双引号. 中括号运算符可以用字符串变量的内容作为属性名.点运算符不能. 中括号运算符可以用纯数 ...

  2. 数据结构 之 并查集(Disjoint Set)

    一.并查集的概念:     首先,为了引出并查集,先介绍几个概念:     1.等价关系(Equivalent Relation)     自反性.对称性.传递性.     如果a和b存在等价关系,记 ...

  3. nodejs-2.httpfuwu

    一.使用nodejs的http服务:处理 "请求或响应" 数据 要使用 HTTP 服务器与客户端,需要 require('http'). Node.js 中的 HTTP 接口被设计 ...

  4. java之集合Collection 3个例子

    package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /* * 集合的由来: * 我们学习的是面 ...

  5. 2. 网友对app后端写作系列文章的写作建议

    很感谢"app后端"qq群的网友,在发布消息后,就收到了大量网友的反馈 下面的建议会融入到写作当中: 1.还有,对版本升级很感兴趣,我们现在为了兼容旧版本,已经把工程代码搞的乱哄哄 ...

  6. 关于CSS定位属性 position 的使用

    CSS中一般通过浮动和定位来对标签进行位置操作.下面我们来讨论一下定位的用法和需要注意的地方. 1.首先,说一下position的几个属性值 (1)none属性值,这个是定义不进行定位,默认为不定位, ...

  7. 在本地没有安装Oracle的情况下,使用plsql远程连接数据库

    远程连接数据库的方式不止一种.这里主要写在本地没有安装Oracle的情况下,使用plsql可视化工具远程连接数据库的方式. 一.前提 首先你本地得安装有plsql工具.具体的安装步骤就不多说了. 二. ...

  8. OpenCV-Python学习01

    import tensorflow as tf 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Tue Dec 31 19:16 ...

  9. (1)STM32使用HAL库操作GPIO

    一  初始化GPIO 使用HAL库的优点在于不用手动添加初始化的代码了,CubeMX会根据软件设置自动生成. 自动生成的HAL库GPIO初始化代码: static void MX_GPIO_Init( ...

  10. js获取数组中最大值和最小值

    var max = Math.max.apply(null, 数组); 获取最大值 var min = Math.min.apply(null, 数组);获取最小值 一句话获取数组中最大的数,最小数