最代码广告位
首页>分享>s2sh高仿百度文库实现文档在线预览>/仿百度文库实现文档在线预览/onlineView/src/com/eda/test/action/FileAction.java
package com.eda.test.action;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.eda.test.action.model.FileModel;
import com.eda.test.common.ConStant;
import com.eda.test.common.FileType;
import com.eda.test.common.GerneralSessionAction;
import com.eda.test.entity.File;
import com.eda.test.util.FileUtil;
import com.eda.test.util.FileUtils;

/**
 * 文件处理Action
 * 
 * @author Lanxiaowei
 * @createTime 2012-6-22 下午05:04:29
 */
public class FileAction extends GerneralSessionAction<FileModel> {

	/**
	 * 跳至首页 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	public String toUpload() {
		return "index";
	}

	/**
	 * 上传文件 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	public String uploadFile() {
		if(isEmptyFile()){
			this.getModel().setMessage("不允许上传空文件!");
			return "toUpload";
		}
		if(checkMaxFileSize()){
			this.getModel().setMessage("上传文件大小限制在20M以内!");
			return "toUpload";
		}
		if (checkFileType()) {
			File file = createFile();
			boolean isSuccess = getFileService().saveFile(file, this.getModel().getDoc());
			this.getModel().setFile(file);
			return "toList";
		} else {
			this.getModel().setMessage("该文件类型不允许上传!");
			return "toUpload";
		}

	}

	/**
	 * 文件预览 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	public String view() {
		return "view";
	}

	/**
	 * 查询所有文件 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	public String list() {
		this.getModel().setFileList(getFileService().findAll());
		return "list";
	}

	/**
	 * 创建File对象 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return File
	 */
	private File createFile() {
		/** 文件上传至服务器存放路径 */
		String UPLOAD_DIR = getProjectRealPath() + ConStant.UPLOAD_BASE_DIR + "\\";
		String BASE_PATH = getBasePath() + ConStant.UPLOAD_BASE_DIR + "/";
		File file = new File();
		String fileName = this.getModel().getDocFileName();
		file.setFileName(fileName);
		String temp = getUploadFileName(fileName, null);
		String swfBasePath = BASE_PATH + temp;
		file.setDistPath(UPLOAD_DIR + temp);
		temp = FileUtils.getFileNameNoStuffix(temp) + "." + ConStant.SWF_STUFFIX;
		swfBasePath = BASE_PATH + temp;
		file.setWebBasePath(swfBasePath);
		file.setDescription(this.getModel().getDescription());
		file.setFileSize(this.getModel().getDoc().length());
		file.setUploadDate(new Date());
		String stuffix = FileUtil.getFileSufix(fileName);
		file.setFileType(getFileTypeName(stuffix));
		return file;
	}

	/**
	 * 生成上传后文件名称 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	public String getUploadFileName(String orignalFileName, String extension) {
		String stuffix = extension;
		if (null == extension || "".equals(extension)) {
			stuffix = FileUtil.getFileSufix(orignalFileName);
		}
		Date currentDate = new Date();
		DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		return dateFormat.format(currentDate) + "." + stuffix;
	}

	/**
	 * 获取文件类型名称 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return String
	 */
	private String getFileTypeName(String fileStuffix) {
		String fileTypeName = "";
		if (fileStuffix.equals(FileType.WORD2003.getStuffix())) {
			fileTypeName = FileType.WORD2003.getValue();
		} else if (fileStuffix.equals(FileType.WORD2007.getStuffix())) {
			fileTypeName = FileType.WORD2007.getValue();
		} else if (fileStuffix.equals(FileType.EXCEL2003.getStuffix())) {
			fileTypeName = FileType.EXCEL2003.getValue();
		} else if (fileStuffix.equals(FileType.EXCEL2007.getStuffix())) {
			fileTypeName = FileType.EXCEL2007.getValue();
		} else if (fileStuffix.equals(FileType.PPT2003.getStuffix())) {
			fileTypeName = FileType.PPT2003.getValue();
		} else if (fileStuffix.equals(FileType.PPT2007.getStuffix())) {
			fileTypeName = FileType.PPT2007.getValue();
		} else if (fileStuffix.equals(FileType.TXT.getStuffix())) {
			fileTypeName = FileType.TXT.getValue();
		} else {
			fileTypeName = "未知类型";
		}
		return fileTypeName;
	}

	/**
	 * 检查文件类型是否允许上传 方法摘要:这里一句话描述方法的用途
	 * 
	 * @param
	 * @return boolean
	 */
	private boolean checkFileType() {
		String fileType = this.getModel().getDocContentType();
		if (null == fileType || fileType.equals("")) {
			return false;
		}
		String[] allowTypes = this.getModel().getAllowTypes().split(",");
		for (int i = 0; i < allowTypes.length; i++) {
			if (allowTypes[i].equals(fileType)) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 检查文件大小
	 *方法摘要:这里一句话描述方法的用途
	 *@param
	 *@return boolean
	 */
	private boolean checkMaxFileSize(){
		if(this.getModel().getMaxUploadSize() < this.getModel().getDoc().length()){
			return true;
		}
		return false;
	}
	
	/**
	 * 检查是否空文件
	 *方法摘要:这里一句话描述方法的用途
	 *@param
	 *@return boolean
	 */
	private boolean isEmptyFile(){
		return this.getModel().getDoc().length() == 0;
	}
}
最近下载更多
senint LV52月24日
月亮星星
houliukou LV362月20日
太阳太阳月亮
liaohuaqiang LV12019年9月11日
星星
undeadway LV12019年8月28日
星星
skipple3 LV342019年8月15日
太阳太阳星星星星
zhengwen515 LV62019年7月17日
月亮星星星星
微微一笑很倾城 LV102019年6月6日
月亮月亮星星星星
听雨楼 LV92019年5月22日
月亮月亮星星
mjzs123 LV52019年3月12日
月亮星星
zhangyan940107 LV22019年3月4日
星星星星
最近浏览更多
xuweisong2010 LV21昨天
太阳月亮星星
247553728 LV55月21日
月亮星星
死了还要爱 LV185月21日
太阳星星星星
myh666 LV65月21日
月亮星星星星
headspring5月10日
暂无贡献等级
834931725月9日
暂无贡献等级
qzlicn LV175月6日
太阳星星
xiangsenlin LV34月28日
星星星星星星
shamexi LV24月27日
星星星星
白纸般的孩子 LV14月25日
星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友