[java]文件上传下载删除与图片预览
图片预览
@GetMapping("/image")
@ResponseBody
public Result image(@RequestParam("imageName") String imageName, HttpServletResponse response) {
// 判断图片是否存在
int result = HbaseUtil.fileIsExist(Constant.tableName, imageName);
if (result == -1) {
return ResultUtil.fileNotFoundError();
} else{
InputStream in = null;
ServletOutputStream sos = null;
try {
FunctionSelect.fileGetF(Constant.tableName, imageName, Constant.downloadTmpDir);
File file = new File(Constant.downloadTmpDir + "/" + imageName);
in = new FileInputStream(file);
sos = response.getOutputStream();
byte[] b = new byte[1024];
while (in.read(b) != -1) {
// 写出
sos.write(b);
}
//刷新
sos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
//关闭文件读取流,输出流
in.close();
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
文件下载
本质和图片预览一样,都是输出字节流,不过文件下载加了一个强制下载。
/**
* 1. 判断文件是否存在 2.设置下载文件
*
* @param filename
* @param response
* @return
*/
@GetMapping("/download")
@ResponseBody
public Result download(@RequestParam("filename") String filename, HttpServletResponse response) {
int result = HbaseUtil.fileIsExist(Constant.tableName, filename);
if (result == -1) {
return ResultUtil.fileNotFoundError();
} else {
try {
// 文件download到服务器上
// TODO: 2020/12/22 这里需要控制文件数量或者总文件夹大小 以便于做进一步的缓存
// todo: 需要做一个定时任务,定期删除文件夹中超过30天的文件。(done)
FunctionSelect.fileGetF(Constant.tableName, filename, Constant.downloadTmpDir);
// 根据路径和文件名创建文件
// TODO: 2020/12/22 此处逻辑需要修改 去掉lob文件夹 修改之前的代码(Completed)
File file = new File(Constant.downloadTmpDir + "/" + filename);
//File file = new File(realPath , fileName);
if (file.exists()) {
// 设置强制下载不打开
response.setContentType("application/force-download");
// 设置文件名
response.addHeader("Content-Disposition", "attachment;fileName=" + filename);
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
return ResultUtil.unknownError();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
return ResultUtil.unknownError();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
return ResultUtil.unknownError();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
return ResultUtil.unknownError();
}
}
return null;
}
[java]文件上传下载删除与图片预览的更多相关文章
- 2013第38周日Java文件上传下载收集思考
2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...
- java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载
java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...
- SpringMVC ajax技术无刷新文件上传下载删除示例
参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...
- Java文件上传下载原理
文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...
- java FTP 上传下载删除文件
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- Struts2 文件上传,下载,删除
本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...
- java文件上传下载
文件上传首先要引入两个核心包 commons-fileupload-1.2.1.jar commons-io-1.4.jar 下面是对文件上传和下载的一些代码做的一个简单封装,可以方便以后直接使用[使 ...
- java 文件上传 下载 总结
首先引入2个jar —— 负载均衡 Ribbon
一.负载均衡 1.RestTemplate 在研究 eureka 源码上篇中,我们在 demo-consumer 消费者服务中定义了用 @LoadBalanced 标记的 RestTemplate,然 ...
- css 14-CSS3属性详解:Web字体
14-CSS3属性详解:Web字体 #前言 开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体.从此,把特殊字体处理成图片的方式便成为了过去. ...
- js下 Day19、综合案例
一.吸顶楼层 效果图: 功能思路分析: 1. 面向对象框架 2. 渲染导航 \1. 数据 \2. 对象结构的数据用for in遍历 \3. 渲染时将属性名设为锚点(a标签的href) 3. 渲染车系 ...
- (菜鸟都能看懂的)网络最大流最小割,Ford-Fulkerson及Dinic详解
关于网络流: 1.定义 个人理解网络流的意思便是由一条条水管以及一个源点S一个汇点T和一些节点组成的一张图,现在要从S点流水到T点,问怎么流才能让流到T的流量最大.边权表示的是这条水管的最大流量,假设 ...
- Vue 修改成功之后我做了什么
Vue 修改成功之后我做了什么 背景:前端将修改的数据传递到后端,后端返回成功之后,我们要将数据及时显示出来. 霸道方法一:重新请求接口 柔和方法二:修改成功之后的数据传递到源数据中,进行双向绑定显示 ...
- Nessus<强大的漏扫工具>
刷漏洞,抓鸡必备,,,,,,, 参考文章: https://blog.csdn.net/wwl012345/article/details/96998187 肝,,,,太全了,,, ps : 我不是脚 ...
- php 文件上传错误
假设文件上传字段的名称img,则: $_FILES['img']['error']有以下几种类型 1.UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功. 2.UPLOAD_ERR_I ...
- yii\filters\AccessControl 访问权限控制
Class yii\filters\AccessControl 所有类 | 属性 | 方法 继承 yii\filters\AccessControl » yii\base\ActionFilter ...
- 【基础】CentOS6如何将命令行模式下安装图形界面
系统版本:这里我使用的系统是CentOS6.9 安装方式:安装方式为yum源安装 1.配置yum源仓库 # 在配置之前最好把我们自己的yum仓库文件备份一下: cp /etc/yum.repos.d/ ...
- python初学者-商品折扣问题
x = int(input("x=")) if x < 1600 : #如果x小于1600,y等于0 y = 0 #没有折扣 print("应付款:",x ...