JAVA文件的上传与访问
/**
* 各种文件上传与判断
* 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文件的上传与访问的更多相关文章
- java文件断点续传上传下载解决方案
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- java 文件的上传和下载
主要介绍使用 smartupload.jar 包中的方法对文件的上传和下载.上传时文件是存放在服务器中,我用的是tamcat. 首先建立一个servlet 类,对文件的操作 package com.d ...
- java文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在JAVA.MyEclipse环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下 ...
- java文件分片上传,断点续传
百度的webUploader的前端开源插件实现的大文件分片上传功能 前端部分 前端页面代码如下,只需要修改自己的文件上传地址接口地址: <!DOCTYPE html> <html l ...
- linux上搭建nginx+ftp,实现文件的上传与访问
ftp服务器搭建 1.新建用户ftpuser并指定主目录为/home/ftpuser (注意:这个目录是后面存储和读取文件的目录) <!--创建用户并指定主目录--> useradd -d ...
- java文件的上传
文件的上传和下载在web应用中是非常常用,也是非常有用的功能. 例如:发送电子邮件时可以同过上传附件发送文件,OA系统中可以通过上传文件来提交公文,社交网站通过上传图片来自定义头像等等. 例如:下 ...
- Java 文件本地上传、下载和预览的实现
以下方法为通用版本 实测图片和pdf 都没有问题 上传方法需要前端配合post请求 ,下载前端用a标签就可以,预览 前端使用ifrme标签 ,就可以实现基本功能... 1.文件本地上传 publi ...
- java 下载文件的两种方式和java文件的上传
一:以网络的方式下载文件 try { // path是指欲下载的文件的路径. File file = new File(path); // 以流的形式下载文件. InputStream fis = n ...
- java文件夹上传下载组件
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
随机推荐
- Stack编程队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 首先定义两个栈 Stack<Integer> stack1 = new Stack<I ...
- 你不知道的JavaScript--Item10 闭包(closure)
JavaScript 闭包究竟是什么? 用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑.陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是 ...
- Django+Bootstrap+Mysql 搭建个人博客(六)
6.1.comments插件 (1)安装 pip install django-contrib-comments (02)settings INSTALLED_APPS = [ 'django.con ...
- Firefox Profile
win7环境下打开Firefox,跳出提示信息 "无法加载你的firefox配置文件 它可能已经丢失或无法访问" 解决方法: 1.按下WIN+R 调出运行,然后输入: firefo ...
- 【prufer编码+组合数学】BZOJ1005 [HNOI2008]明明的烦恼
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Solution 这 ...
- bzoj 2763 [JLOI2011]飞行路线 Dijikstra 分层
k<=10,所以每用一次机会就跳到一个新图中, 每一个图按原图建边,相邻两图中建边权为0的边 补一补dj,好像我以前觉得dj特别难,hhhhh #include<cstdio> #i ...
- bzoj 3680 吊打xxx 模拟退火
第一道模拟退火 重心嘛,就是要找到一个点,使其到所有点距离*该点权值和最小 思路:初始化一个T,mint,当T大于mint时,每次随机一个解,如果解比当前解优,直接转移,否则,以某概率(与T正相关)转 ...
- java技术树+必读书籍
引子 本篇文章用技术树的形式来展示java相关技术栈.所有技术点有博客的都自带链接,没有的后续加上. 必读书籍推荐: 1.java基础: <effective java>-->四星推 ...
- Spring事务管理----事物回滚
Spring的事务管理默认只对未检查异常(java.lang.RuntimeException及其子类)进行回滚,如果一个方法抛出Checked异常,Spring事务管理默认不进行回滚. 改变默认方式 ...
- java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
Linux下使用eclipse开发web项目,运行的时候出现 Java.lang.ClassNotFoundException: com.MySQL.jdbc.Driver,解决办法如下: 1.导入M ...