package com.zys.action;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.zys.biz.FileBiz;
import com.zys.entity.FileBean;
import com.zys.entity.User;
import com.zys.util.Config;
import com.zys.util.FileUtil;
import com.zys.util.MD5;
import com.zys.util.MyContext;
public class FileAction extends ActionSupport {
FileBean file = new FileBean();
private File ff[];
private String ffFileName[] ;
private FileBiz biz = new FileBiz();
private String fetch;
public String upload() throws Exception {
User user = (User) MyContext.getSession().get("user");
String path = Config.mainDir +user.getUsername();
//上传前确认用户是否添加了要上传的文件
if(ff==null){
MyContext.getRequest().put("message", "没有选择文件!!请选择文件后再上传。。。");
return INPUT;
}
long limitSize = 0;
for (int i = 0; i < ff.length; i++) {
File newfile = new File(path, FileUtil.rename(ffFileName[i]));//重命名
//上传前先确认是否重复上传
boolean canupload= biz.isExist(ffFileName[i], Integer.parseInt(user.getUserid()));
if(canupload==true){
MyContext.getRequest().put("message", "该文件已存在网盘,请勿重复上传!");
return INPUT;
}
limitSize+= ff[i].length();
if(limitSize>getUploadSize(user)){//用户上传文件大小大于对应权限能上传的最大限制
MyContext.getRequest().put("message", "上传文件大小超过限制!!");
return INPUT;
}
if(limitSize>getCanUseSize(user)){
MyContext.getRequest().put("message", "磁盘剩余空间不足!!");
return INPUT;
}
FileUtils.copyFile(ff[i],newfile);
//文件上传成功更新md5map
Config.putMap(newfile);
file.setUserid(user.getUserid());
file.setFilename(ffFileName[i]);
file.setFilesize(ff[i].length()+"");
file.setRealpathname(newfile.getAbsolutePath());
file.setFetchcode(MD5.create(newfile.getAbsolutePath()));
int is = biz.upload(file);
if(is<=0){
MyContext.getRequest().put("message", "文件上传存储到数据库失败!");
return INPUT;
}
}
return SUCCESS;
}
/**
* 获得用户磁盘剩余空间
* @param user
*/
private long getCanUseSize(User user) {
String path= FileUtil.getSaveDir()+user.getUsername();
long c = FileUtil.countSize(path);
return getTotalSize(user)-c;
}
/**
* 返回用户单次允许上传文件大小
* @param user
* @return
*/
private long getUploadSize(User user) {
if(user.getUsertype()== Config.USER_TYPE_VIP){
return Config.maxSize_vip*1024*1024;
}else{
return Config.maxSize_user*1024*1024;
}
}
/**
* 返回用户磁盘总大小
* @param user
* @return
*/
private long getTotalSize(User user) {
if(user.getUsertype()== Config.USER_TYPE_VIP){
return Config.container_vip*1024*1024;
}else{
return Config.container_user*1024*1024;
}
}
/**
* 用户已上传文件列表
* @return
*/
public String list(){
System.out.println("=============");
User user=(User) MyContext.getSession().get("user");
if(user==null){
MyContext.getRequest().put("message", "未登录,没有权限访问!");
return INPUT;
}
List<FileBean> filelist = new ArrayList<FileBean>();
filelist = biz.list(Integer.parseInt(user.getUserid()));
if(filelist==null){
MyContext.getRequest().put("message", "没有以上传文件");
return INPUT;
}
System.out.println(filelist.size());
MyContext.getRequest().put("filelist", filelist);
return SUCCESS;
}
public String delete(){
FileBean wfile= biz.getFile(fetch);
String realpath = wfile.getRealpathname();
System.out.println(realpath+"删除文件的真实路径");
File file = new File(realpath);
boolean isFileDel = file.delete();
if(isFileDel){
int isDbDel = biz.delete(fetch);
if(isDbDel>0){
//删除成功后将映射表中数据删除
Config.md5Map.remove(fetch);
return SUCCESS;
}else{
MyContext.getRequest().put("message", "文件从数据库删除失败,可能无此条数据!");
return INPUT;
}
}else{
MyContext.getRequest().put("message", "文件从网盘删除失败!可能文件不存在");
return INPUT;
}
}
public File[] getFf() {
return ff;
}
public void setFf(File[] ff) {
this.ff = ff;
}
public String[] getFfFileName() {
return ffFileName;
}
public void setFfFileName(String[] ffFileName) {
this.ffFileName = ffFileName;
}
public String getFetch() {
return fetch;
}
public void setFetch(String fetch) {
this.fetch = fetch;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
软硬件环境: Windows Server 2003/PC 相关技术: Jsp+Struts2+MD5加密 开发工具: MyEclipse8.6+Tomcat6.0+SQLserver2008 项目描述: 独立完成所有功能开发。数据库包括用户表和文件表,项目主体由Struts2框架搭建,前台jsp页面表单使用OGNL标签,XX_zh_CN(en_US).properties文件实现中英文国际化,XXAction-validation.xml实现表单校验,MD5加密文件绝对路径,保护文件安全。tomcat启动时监听器实现扫描所有文件生成Map(存放加密码和对应文件绝对路径)。过滤器设置不允许上传文件的类型,过滤不安全文件
资源推荐
资源详情
资源评论
收起资源包目录
UNET.rar (92个子文件)
unet.sql 323B
unet
.mystrutsdata 240B
.settings
org.eclipse.jdt.core.prefs 330B
src
com
zys
dao
IFileDao.java 406B
imple
UserDao.java 1KB
FileDao.java 3KB
IUserDao.java 289B
filter
action
downloadAction.java 2KB
ImageAction.java 2KB
UserAction.java 2KB
FileAction.java 5KB
db
baseDb.java 2KB
biz
IFileBiz.java 334B
IUserBiz.java 190B
FileBiz.java 692B
UserBiz.java 619B
entity
User.java 2KB
FileBean.java 1KB
util
MyContext.java 471B
DateUtil.java 1014B
MD5.java 1KB
Config.java 704B
MyMath.java 372B
FileUtil.java 2KB
listener
ContextListener.java 2KB
struts.xml 2KB
config.properties 96B
.struts.mex 1KB
.project 1KB
WebRoot
list.jsp 3KB
images
line.gif 590B
slice.gif 461B
pack.gif 5KB
toll.gif 2KB
plugins-48.gif 2KB
footer_bg.gif 62B
product_box_bg.png 3KB
nav_bg.gif 162B
wrapper.gif 946B
black_box_bg.gif 60B
email-48.gif 2KB
logo.gif 2KB
Thumbs.db 55KB
black_box_left.gif 2KB
date-48.gif 2KB
small_icon.gif 1KB
black_box_right.gif 1KB
error.html 1KB
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 773B
classes
com
zys
dao
IUserDao.class 254B
IFileDao.class 413B
imple
UserDao.class 2KB
FileDao.class 4KB
filter
action
UserAction.class 2KB
ImageAction.class 3KB
downloadAction.class 3KB
FileAction.class 5KB
db
baseDb.class 3KB
biz
IUserBiz.class 254B
UserBiz.class 1KB
IFileBiz.class 413B
FileBiz.class 1KB
entity
User.class 2KB
FileBean.class 2KB
util
MyContext.class 907B
MD5.class 2KB
FileUtil.class 2KB
DateUtil.class 1KB
Config.class 1KB
MyMath.class 590B
listener
ContextListener$1.class 751B
ContextListener.class 3KB
struts.xml 2KB
config.properties 96B
.struts.mex 1KB
lib
sqljdbc.jar 301KB
login.html 1KB
foot.jsp 193B
index.html 4KB
login.jsp 1KB
index.jsp 4KB
list.html 3KB
error.jsp 526B
register.html 1KB
head.jsp 831B
register.jsp 1KB
download.html 1KB
style.css 7KB
download.jsp 595B
.mymetadata 285B
.classpath 533B
.myeclipse
共 92 条
- 1
资源评论
- 8983165xld2014-01-06还行但是不是我想要的,列出有用的资源较少
- nightrain772013-11-02部门内容不错,有些地方好像有问题
zhangyushu000111
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功