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文件夹上传下载组件
核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...
随机推荐
- Tiny4412模式跳转
ARM体系的CPU有以下7种工作模式: 1.用户模式(Usr):用于正常执行程序: 2.快速中断模式(FIQ):用于高速数据传输: 3.外部中断模式(IRQ):用于通常的中断处理: 4.管理模式(sv ...
- Kali Linux虚拟机安装完整安装过程及简单配置(视频)
点击播放视频 附:视频中出现的两个txt文本,包含了大致的安装与配置过程: 文本1:KaliLinux虚拟机安装和初步配置 Kali Linux虚拟机安装和初步配置 大家好,今天给大家演示一下在VMw ...
- JavaWeb(四)Servlet-1
1.Servlet 简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中.Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet ...
- ES创建mapping时字段别名
ES默认是动态创建索引和索引类型的mapping的,但是在学习的时候还能这样用,在生产中一定是手动制定mapping!在生产中经常会遇到这样的需求,想用某个字段进行统计,又想对该字段进行模糊查询,解决 ...
- Visual Studio Code Tips
新项目要用到Visual Studio Code, 在使用的过程中有些tips, 记录下来以便查阅. 1. 自动保存代码 文件 => 自动保存 2. 帮助输入代码模式 扩展 => 安装HT ...
- pymysql和 SQLAlchemy在python下的使用
#!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy import create_engine, Table, Column, In ...
- MAC下Intellij IDEA常用快捷键
alt+f7 : 查找在哪里使用 command+alt+f7 : 这个是查找选中的字符在工程中出现的地方,可以不是方法变量类等,这个和上面的有区别的 command+F7 : 可以查询当前元素在当前 ...
- Java RESTful 框架的性能比较
来源:鸟窝, colobu.com/2015/11/17/Jax-RS-Performance-Comparison/ 如有好文章投稿,请点击 → 这里了解详情 在微服务流行的今天,我们会从纵向和横向 ...
- laravel5.5解决小程序登陆态的问题
修改一个文件 : vendor\laravel\framework\src\Illuminate\Session\Middleware\StartSession.php 找到getSession()方 ...
- Twitter分布式自增ID算法snowflake原理解析
以JAVA为例 Twitter分布式自增ID算法snowflake,生成的是Long类型的id,一个Long类型占8个字节,每个字节占8比特,也就是说一个Long类型占64个比特(0和1). 那么一个 ...