/**
* 各种文件上传与判断
* 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. 简述spring的工作原理

    建议不要硬着头皮看spring代码,本身的代码800多m,就是不上班开始看也不知道什么时候看完.如果想学学ioc,控制反转这些建议看看jodd项目,比较简练,但是我仍然不建议过多的看这些框架的代码,因 ...

  2. SSM-SpringMVC-25:SpringMVC异常顶级之自定义异常解析器

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上篇博客相信大家也看到了,自定义异常,用了SimpleMappingExceptionResolver这个解析 ...

  3. 分布式定时任务框架——python定时任务框架APScheduler扩展

    http://bbs.7boo.org/forum.php?mod=viewthread&tid=14546 如果将定时任务部署在一台服务器上,那么这个定时任务就是整个系统的单点,这台服务器出 ...

  4. 玩转web之ligerui(二)---前缀编码生成树(分级码)实现树型表格

    请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 背景:             在ligerui中(其他uI可能也大同小异),实现树形表格可以通过父子节点,也可以通过前缀编码生成树去实现,而使 ...

  5. C#和C++除了语法上的差别外,还有什么其他的区别

    C#与C++的区别: 1.C#有垃圾自动处理机制,所以程序员不用担心对象的内存的释放问题: 2.C#严禁使用指针,但是非要使用的话,只能在unsafe程序块中的使用: 3.C#只有单继承: 4.C#必 ...

  6. 【莫比乌斯反演】BZOJ2820 YY的GCD

    Description 求有多少对(x,y)的gcd为素数,x<=n,y<=m.n,m<=1e7,T<=1e4. Solution 因为题目要求gcd为素数的,那么我们就只考虑 ...

  7. BZOJ_4320_ShangHai2006 Homework_分块

    BZOJ_4320_ShangHai2006 Homework_分块 Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当 ...

  8. BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树

    BZOJ_1672_[Usaco2005 Dec]Cleaning Shifts 清理牛棚_动态规划+线段树 题意:  约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西.约翰发现,如果要使这群 ...

  9. BZOJ_1712_[Usaco2007 China]Summing Sums 加密_矩阵乘法

    BZOJ_1712_[Usaco2007 China]Summing Sums 加密_矩阵乘法 Description     那N只可爱的奶牛刚刚学习了有关密码的许多算法,终于,她们创造出了属于奶牛 ...

  10. 记一次MySQL数据库拒绝访问的解决过程

    问题背景 用wordpress搭博客,数据库采用MySQL.为了调试方便,创建账户my_account ,允许它从任意主机访问数据库. CREATE USER `my_account`@'%' IDE ...