Struts2+uploadify多文件上传实例
作者:Jaaaaaaaava 发布时间:2023-03-19 07:53:35
标签:Struts2,uploadify,文件上传
本文实例为大家分享了Struts2+uploadify多文件上传的具体代码,供大家参考,具体内容如下
首先我这里使用的是 Jquery Uploadify3.2的版本
导入相关的CSS JS
<link rel="stylesheet" type="text/css" href="<%=basePath%>css/uploadify/uploadify.css" rel="external nofollow" >
<script src="<%=basePath%>js/jquery.min.js"></script>
<script src="<%=basePath%>js/uploadify/jquery.uploadify.min.js"></script>
接下来是 上传的 JSP 页面代码
<form action="" method="post" >
<input type="file" name="img_file" id="img_file">
<div id="uploadfileQueue" ></div>
<div id="imgs" ></div>
<div id="dialog-message" ></div>
</form>
<p>
<a href="javascript:void(0);" rel="external nofollow" onclick="myUpload()">上传</a>
<a href="javascript:$('#img_file').uploadify('cancel')" rel="external nofollow" >取消上传</a>
</p>
这里是最关键的JS 代码,有注释
$(function(){
$("#img_file").uploadify({
auto:false,//是否自动上传
height: 30,
buttonText:'选择图片',
cancelImage:'<%=basePath%>img/uploadify/uploadify-cancel.png',
swf : '<%=basePath %>js/uploadify/uploadify.swf',
// expressInstall:'js/uploadify/expressInstall.swf',
uploader : '<%=basePath%>json/fileUploadAction.action', //后台处理上传文件的action
width : 120 ,
'multi': true, //设置为true将允许多文件上传
'filesSelected': '4',
queueID:'uploadfileQueue',
fileObjName:'img_file', //与后台Action中file属性一样
/*
formData:{ //附带值
'userid':'111',
'username':'tom',
'rnd':'111'
},
*/
fileTypeDesc:'上传文件支持的文件格式:jpg,jpge,gif,png',
fileTypeExts:'*.jpg;*.jpge;*.gif;*.png',//*.jpg;*.jpge;*.gif;*.png
queueSizeLimit : 4,//只能一次上传4张图片
// simUploadLimit:1,//一次可以上传1个文件
fileSizeLimit:'2097152',//上传文件最大值 单位为字节 2M
//返回一个错误,选择文件的时候触发
onSelectError:function(file, errorCode, errorMsg){
switch(errorCode) {
case -100:
alert("上传的文件数量已经超出系统限制的4个文件!");
break;
case -110:
alert("文件 ["+file.name+"] 大小超出系统限制的2M大小!");
break;
case -120:
alert("文件 ["+file.name+"] 大小异常!");
break;
case -130:
alert("文件 ["+file.name+"] 类型不正确!");
break;
}
}, //
//上传到服务器,服务器返回相应信息到data里
onUploadSuccess:function(file, data, response){
var objs = eval('('+data+')');
var phtml = "<span><img style='width:150;height:150' src='/uploads/"+objs.filename+"'></span>";
if($("#imgs span").length==0){
$("#imgs").html(phtml);
}else{
$("#imgs span:last").after(phtml);
}
},
onSelect : function(file) {
//alert(file.name);
},
//removeCompleted:true,//上传的文件进度条是否消失
requeueErrors:false,
// removeTimeout:2,//进度条消失的时间,默认为3
progressData:"percentage",//显示上传的百分比
onUploadError : function(file,errorCode,errorMsg,errorString,swfuploadifyQueue) { //这里是取消的时候发生
// $("#dialog-message").html(errorString);
}
});
});
//上传文件
function myUpload(){
$("#img_file").uploadify('upload','*');
}
java 上传的Action 代码
/**
* 上传文件的Action
* @author wzh
*
*/
@Controller
@Scope("prototype")
public class FileUploadAction extends BaseAction {
private File img_file;
private String img_fileContentType;//格式同上"fileName"+ContentType
private String img_fileFileName;//格式同上"fileName"+FileName
private String savePath;//文件上传后保存的路径
private Map<String, Object> dataMap = new HashMap<String, Object>();
@Override
/***
* 上传文件
*/
public String execute() throws Exception{
System.out.println("savePath"+getSavePath());
File dir=new File(getSavePath());
System.out.println(dir.getAbsolutePath());
//判断是否存在路径
if(!dir.exists()){
dir.mkdirs();
}
//当前上传的文件
File file=getImg_file();
//获得后缀
String ext =FileUtil.getExtensionName(getImg_fileFileName());
String newFileName = UUID.randomUUID()+ext;
FileOutputStream fos=new FileOutputStream(getSavePath()+"//"+newFileName);
FileInputStream fis=new FileInputStream(getImg_file());
byte []buffers=new byte[1024];
int len=0;
while((len=fis.read(buffers))!=-1){
fos.write(buffers,0,len);
}
fos.close();
fis.close();
// String uploadFileName = getImg_fileFileName();
dataMap.put("filename",newFileName);
return SUCCESS;
}
<!-- 文件上传相关的 -->
<action name="fileUploadAction" class="fileUploadAction">
<param name="savePath">E:/Tomcat6.0/webapps/uploads</param>
<result type="json">
<param name="root">dataMap</param>
</result>
</action>
配置完以上的基本就OK了。
来源:https://blog.csdn.net/CJaver/article/details/38317455


猜你喜欢
- 干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记。经常想得捡起,但总是因为一些原因,不能如愿。其实不是没有时间,只是有
- 缘起:去年(大三上学期)比较喜欢写小游戏,于是想试着写个迷宫试一下。程序效果:按下空格显示路径:思考过程:迷宫由一个一个格子组成,要求从入口
- kk-anti-reptile 是适用于基于 spring-boot 开发的分布式系统的反爬虫组件。系统要求基于 spring-boot 开
- 起因最近在写CRUD的时候,发现有个分页的VO写的健壮性比较差,一时手痒改了一下,没想到改了之后好几个功能都出现了问题。原VO关键代码如下:
- 1. 问题描述springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础
- 在图文混排的文档中,我们可以根据需要将文档中的文字信息或者图片提取出来,通过C#代码可以提取Word和PDF文件中的文本和图片,那么同样的,
- 前言以下为本文要记录的大概内容:Java基础案例:两只老虎、三个和尚、考试奖励以下是本篇文章正文内容,仅供参考一、案例1:两只老虎1.题目:
- 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。解法2: 利用选择排序或交
- 本文实例为大家分享了Java网络编程TCP实现文件上传的具体代码,供大家参考,具体内容如下上一篇博客,用网络编程TCP 实现聊天,这次实现文
- zenDiscovery实现机制ping是集群发现的基本手段,通过在网络上广播或者指定ping某些节点获取集群信息,从而可以找到
- 本文介绍了android APP登陆页面适配的实现,分享给大家,具体如下:先看效果图。登陆首页效果图原理为RootView增加监听事件,然后
- 修改Android FloatingActionButton的title的文字颜色及背景颜色实例详解首先看一张图片 我是在一个不错的开源的F
- 在Android开发者网站的 "外部存储技术信息"文档中描述道 : WRITE_EXTERNAL_STORAGE只为设备
- 前言我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volat
- 添加jar包这里的Scala不是maven工程所以要找到项目结构(快捷键:同时按住Ctrl+shift+Alt+s)在模块里面添加添加MyS
- 概述: 当希望能直接在数据库语言中只检索符合条件的记录,不需要再通过程序对其做处理时,SQL语句分页
- Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。换句话说,一
- using System; using System.Collections.Generic; using System.Linq; usi
- Android 11文件管理权限申请Android 11文件管理权限申请,为什么需要这个权限,因为在Android 11后,无法直接在SDc
- 应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用for+Insert方法导致应用响应缓慢,因为 sqlite插入数据的时候