package org.yf.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.yf.vo.UploadFiles;
import org.yf.service.IUploadService;
import org.yf.utils.GetReqResObject;
import org.yf.utils.UploadConfigurationRead;
import com.opensymphony.xwork2.ActionSupport;
public class UploadAction extends ActionSupport
{
/**
*
*/
private static final long serialVersionUID = 1L;
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
private List<UploadFiles> uploadFiles = new ArrayList<UploadFiles>();
private IUploadService uploadService;
private String uploadSavePath = "E:/invain/upLoad/"; //上传文件的绝对路径
public String uploadFile() throws Exception
{
try
{
//String targetDirectory = ServletActionContext.getServletContext().getRealPath();
if(upload!=null){
for (int i = 0; i < upload.length; i++)
{
String fileName = uploadFileName[i];
String type = uploadContentType[i];
String realName = UUID.randomUUID().toString()+ getExt(fileName);
String targetDirectory = uploadSavePath;
File target = new File(targetDirectory, realName);
if(target==null){
target.mkdir();
}
FileUtils.copyFile(upload[i], target);
UploadFiles uf = new UploadFiles();
uf.setFiletype(this.getFileType(fileName));
uf.setFilename(fileName);
uf.setRealname(realName);
uf.setFilepath(target.getPath());
uf.setFilesize(this.getSizeFormat(this.getFileSizes(target)));
this.uploadService.insertUpload(uf);
uploadFiles.add(uf);
}
//ServletActionContext.getRequest().setAttribute("uploadFiles",uploadFiles);
}
} catch (Exception e)
{
e.printStackTrace();
addActionError(e.getMessage());
return INPUT;
}
return SUCCESS;
}
public String up(){
return INPUT;
}
public static String getExt(String fileName)
{
return fileName.substring(fileName.lastIndexOf("."));
}
// 取得文件大小
public long getFileSizes(File f) throws Exception{
long s=0;
if (f.exists()) {
FileInputStream fis = null;
fis = new FileInputStream(f);
s= fis.available();
} else {
f.createNewFile();
System.out.println("文件不存在");
}
return s;
}
//文件大小格式化
public String getSizeFormat(long fileSize){
String size = null;
DecimalFormat df = new DecimalFormat("#.0");
if(fileSize>0 && fileSize<1024){
size = String.valueOf(df.format((float)fileSize))+"B";
}
if(fileSize>1024 && fileSize<1024*1024){
size = String.valueOf(df.format((float)fileSize/1024))+"KB";
}
if(fileSize>1024*1024 && fileSize<1024*1024*1024){
size = String.valueOf(df.format((float)fileSize/1024/1024))+"MB";
}
if(fileSize>1024*1024*1024){
size = String.valueOf(df.format((float)fileSize/1024/1024/1024))+"GB";
}
return size;
}
// 取文件的类型
public String getFileType(String fileName){
String fName=null;
fName = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
return fName;
}
/**
* 判断文件名是否相等
* @return
* @throws BaseException
*/
public String checkFileIsSame() {
try{
this.ajaxInit();
PrintWriter out = GetReqResObject.getResponse().getWriter();
String param = (GetReqResObject.getRequest().getParameter("param"));
if(param!=null){
UploadFiles uf = new UploadFiles();
uf.setFilename(param);
List fileList = this.uploadService.queryByName(uf);
if(fileList!=null&&fileList.size()>0){
out.println("upload1"+","+"same");
}else{
out.println("upload2"+",");
}
}
} catch (Exception e) {
}
return null;
}
//ajax初始化(通用)
public void ajaxInit() throws IOException {
GetReqResObject.getRequest().setCharacterEncoding("UTF-8");
GetReqResObject.getResponse().setCharacterEncoding("UTF-8");
GetReqResObject.getResponse().setContentType("text/xml");
GetReqResObject.getResponse().setHeader("pragma", "no-cache");
GetReqResObject.getResponse().setHeader("cache-control", "no-cache");
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public List<UploadFiles> getUploadFiles() {
return uploadFiles;
}
public void setUploadFiles(List<UploadFiles> uploadFiles) {
this.uploadFiles = uploadFiles;
}
public IUploadService getUploadService() {
return uploadService;
}
public void setUploadService(IUploadService uploadService) {
this.uploadService = uploadService;
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String getUploadSavePath() {
return uploadSavePath;
}
public void setUploadSavePath(String uploadSavePath) {
this.uploadSavePath = uploadSavePath;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Struts2+hibernate+spring实现多文件的上传与下载功能,主要包括:上传、下载、删除 1.能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 3.文件保存的名称UUID生成,不过显示并下载的名称都是原文件名称(防止在转换过程中出现乱码) 4.文件不建议保存在tomcat服务器下,因为重启服务器上传的文件就被覆盖,建议报存在绝对路径下或上传到ftp 5.文件的删除根据数据库id进行删除(数据库表存放在数据库文件夹中,将data.sql和object.sql导入oracle数据库即可) 6.文件上传是运用了Ajax技术对上传文件校验,判断数据库中是否存在该文件
资源推荐
资源详情
资源评论
收起资源包目录
ssh2多文件的上传与下载 (1873个子文件)
all-wcprops 50KB
all-wcprops 3KB
all-wcprops 3KB
all-wcprops 3KB
all-wcprops 3KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 2KB
all-wcprops 691B
all-wcprops 432B
all-wcprops 303B
all-wcprops 299B
all-wcprops 297B
all-wcprops 262B
all-wcprops 254B
all-wcprops 112B
排序.bmp 785KB
UploadAction.class 6KB
TSysDict.class 4KB
DownloadAction.class 3KB
UploadConfigurationRead.class 3KB
BaseException.class 3KB
BeanValue.class 2KB
UploadFiles.class 2KB
UploadDao.class 2KB
UploadService.class 1KB
ExceptionRescoure.class 976B
GetReqResObject.class 715B
IUploadService.class 303B
IBaseDao.class 271B
.classpath 7KB
org.eclipse.wst.jsdt.ui.superType.container 49B
jquery-ui-1.8.14.custom.css 33KB
jquery-ui-1.8.20.custom.css 33KB
jquery-ui-1.8.20.custom.css 33KB
jquery.ui.theme.css 18KB
tab.css 5KB
home.css 5KB
default.css 5KB
jquery.ui.datepicker.css 4KB
jquery.ui.button.css 2KB
jquery.ui.tabs.css 1KB
jquery.ui.dialog.css 1KB
jquery.ui.core.css 1KB
jquery.ui.resizable.css 1KB
left.css 1KB
jquery.ui.slider.css 1KB
jquery.ui.autocomplete.css 1KB
jquery.ui.accordion.css 1KB
xtree.css 850B
jquery.ui.base.css 427B
jquery.ui.progressbar.css 376B
jquery.ui.selectable.css 324B
jquery.ui.all.css 292B
Thumbs.db 717KB
Thumbs.db 91KB
Thumbs.db 27KB
Thumbs.db 16KB
Thumbs.db 15KB
validation-config.dtd 603B
entries 63KB
entries 3KB
entries 3KB
entries 3KB
entries 2KB
entries 2KB
entries 2KB
entries 2KB
entries 2KB
entries 854B
entries 548B
entries 458B
entries 403B
entries 401B
entries 400B
entries 370B
entries 274B
format 2B
format 2B
format 2B
format 2B
000.gif 55KB
provider_login_bg.gif 52KB
home_center_h1.gif 30KB
password.gif 27KB
home_center_h1_old.gif 25KB
pop_pagehead.gif 18KB
error_login.gif 12KB
title1.gif 10KB
home_left_bylaw_bg.gif 9KB
error_expired.gif 9KB
home_center_h3.gif 8KB
home_center_h2.gif 8KB
home_right_price_bg_.gif 8KB
main_title_finished.gif 7KB
main_title_pending.gif 7KB
logo1.gif 7KB
pending_bg.gif 7KB
logo.gif 6KB
共 1873 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19
invain
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页