jfinal文件上传与下载
import
com.alibaba.fastjson.JSONObject;
import
com.jfinal.core.Controller;
import
com.jfinal.ext.kit.ZipUtil;
import
com.jfinal.kit.PathKit;
import
com.jfinal.upload.UploadFile;
import
java.io.*;
import
java.text.SimpleDateFormat;
import
java.util.Arrays;
import
java.util.Collections;
import
java.util.Date;
import
java.util.List;
public
class
FileController
extends
Controller{
public
void
upload() {
String path =
new
SimpleDateFormat(
"yyyy/MM/dd"
).format(
new
Date());
UploadFile file = getFile(
"imgFile"
, PathKit.getWebRootPath() +
"/temp"
);
File source = file.getFile();
String fileName = file.getFileName();
String extension = fileName.substring(fileName.lastIndexOf(
"."
));
String prefix;
if
(
".png"
.equals(extension) ||
".jpg"
.equals(extension) ||
".gif"
.equals(extension)){
prefix =
"img"
;
fileName = generateWord() + extension;
}
else
{
prefix =
"file"
;
}
JSONObject json =
new
JSONObject();
try
{
FileInputStream fis =
new
FileInputStream(source);
File targetDir =
new
File(PathKit.getWebRootPath() +
"/"
+ prefix +
"/u/"
+ path);
if
(!targetDir.exists()) {
targetDir.mkdirs();
}
File target =
new
File(targetDir, fileName);
if
(!target.exists()) {
target.createNewFile();
}
FileOutputStream fos =
new
FileOutputStream(target);
byte
[] bts =
new
byte
[
300
];
while
(fis.read(bts,
0
,
300
) != -
1
) {
fos.write(bts,
0
,
300
);
}
fos.close();
fis.close();
json.put(
"error"
,
0
);
json.put(
"url"
,
"/"
+ prefix +
"/u/"
+ path +
"/"
+ fileName);
source.delete();
}
catch
(FileNotFoundException e) {
json.put(
"error"
,
1
);
json.put(
"message"
,
"上传出现错误,请稍后再上传"
);
}
catch
(IOException e) {
json.put(
"error"
,
1
);
json.put(
"message"
,
"文件写入服务器出现错误,请稍后再上传"
);
}
renderJson(json.toJSONString());
}
public
void
download(){
String path = getPara(
0
);
String img = PathKit.getWebRootPath() +
"/img/u/"
+ path.replaceAll(
"_"
,
"/"
);
ZipUtil.zip(img, PathKit.getWebRootPath() +
"/img/temp/"
+ path);
renderFile(
"/img/temp/"
+ path +
".zip"
);
}
private
String generateWord() {
String[] beforeShuffle =
new
String[] {
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"I"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"O"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
};
List<String> list = Arrays.asList(beforeShuffle);
Collections.shuffle(list);
StringBuilder sb =
new
StringBuilder();
for
(
int
i =
0
; i < list.size(); i++) {
sb.append(list.get(i));
}
String afterShuffle = sb.toString();
String result = afterShuffle.substring(
5
,
9
);
return
result;
}
jfinal文件上传与下载的更多相关文章
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- (转载)JavaWeb学习总结(五十)——文件上传和下载
源地址:http://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传 ...
- JavaWeb学习总结,文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- java文件上传和下载
简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到 ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- JavaWeb学习总结(五十)——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- 文件上传和下载(可批量上传)——Spring(三)
在文件上传和下载(可批量上传)——Spring(二)的基础上,发现了文件下载时,只有在Chrome浏览器下文件名正常显示,还有发布到服务器后,不能上传到指定的文件夹目录,如上传20160310.txt ...
- 文件上传和下载(可批量上传)——Spring(二)
针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...
- Struts2 之 实现文件上传和下载
Struts2 之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...
随机推荐
- python继承 super()
写这篇博文,始于以下问题的探究: #coding:utf-8 class A(object): def __init__(self): print 'enter A' print 'leave A' ...
- (WC2018模拟十二)【FJOI2016集训Day7T2】点对游戏
题解: 还好...看懂题目就好做了.(Orzdyh) 首先选择的点是等概率随机的,也就是说每种选择结果的概率都是一样的,所以选择一个点的时候已经选择的点不会有影响,那么就可以直接算出点对个数再求总体的 ...
- CF1019C Sergey's problem (图上构造)
题目大意:给你一个有向连通图,让你找出一个点集,保证点集内的点之间没有直接连边,且集合中存在一点,到一个 非点集中的点的距离小于等于2 思路很清奇 首先编号从小到大遍历每个点,如果这个点没有被访问过, ...
- 斗地主算法的设计与实现(一)--项目介绍&如何定义和构造一张牌
大学期间,我在别人的基础上,写了一个简易的斗地主程序. 主要实现了面向对象设计,洗牌.发牌.判断牌型.比较牌的大小.游戏规则等算法. 通过这个斗地主小项目的练习,提高了我的面向对象设计能力,加深了对算 ...
- [terry笔记]data guard基础知识
如下介绍了data guard的基础知识,整理自网络: Data Gurad 通过冗余数据来提供数据保护,Data Gurad 通过日志同步机制保证冗余数据和主数据之前的同步,这种同步可以是实时,延时 ...
- HDU 4366 Successor
Successor Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: ...
- cogs 141. [USACO Jan08] 奶牛的选举
141. [USACO Jan08] 奶牛的选举 ★ 输入文件:elect.in 输出文件:elect.out 简单对比时间限制:1 s 内存限制:16 MB 在推翻了Farmer J ...
- hdu 1166 敌兵布阵 (线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- JConsole远程监控Tomcat7
下面技术应用于最优质的水果的鲜果篮 一.设置服务端: 1.增加Listener到conf/server.xml <Listener className="org.apache.cata ...
- springBoot 打war包 程序包com.sun.istack.internal不存在的问题
使用的是 idea - Lifecycle-package 的方式打包(maven) 确认 <packaging>war</packaging> 修改启动类: (原启动类) ...