uploadify3.1上传 spring+struts2+hibernate框架中取值的问题
js
$(document).ready(function() {
$("#apkIcon").uploadify({
'swf' : 'js/upload/uploadify.swf',
'uploader' : 'action_upload.action',
'cancel' : 'js/upload/uploadify-cancel.png',
'buttonClass' : 'uploadify-button',
'fromData' : '{'id':'${"#apkIcon"}.val()'}',
'fileObjName' : 'apkIcon',
'buttonImage' : 'js/upload/apk_ctw.gif',
'progressData' : 'percentage',
'removeCompleted': false,
'method' : 'post',
'fileTypeExts' : '*.png;*.gif;',
'width' : '65',
'height' : '30',
'fileSizeLimit' : '256KB',
'auto' : true,
'multi' : true,
'onUploadStart' : function(file) {
alert(file.name);
$("#icon").attr("value",file.name);
alert($("#icon").val());
},
onUploadSuccess:function(file,data,response){
if(response){
$("#icondiv").html("<img src='"+data+"'>");
}else{
alert('上传发生错误');
}
},
'onUploadError':function(file,errorCode,errorMsg,errorString){
alert('只能上传不大于256KB的图片文件');
},
'onQueueComplete': function (event, data) {
// if(data.filesUploaded>=1){
// alert('上传成功');
// }
}
});
});
jsp:
<input type="file" id="apkIcon" name="apkIcon" >
action
public void upload(){
//File imageFile=new File(ServletActionContext.getServletContext().getRealPath("/uploads")+"/"+param);
//upload(up, imageFile);
try {
// 用于设定诸如缓存之类的参数,和性能相关
// 此处用默认设定
DiskFileItemFactory dfif = new DiskFileItemFactory();
// 解析表单中的数据
ServletFileUpload upload = new ServletFileUpload(dfif);
//upload.setSizeMax(10 * 1024 * 1024); // 允许上传的最大值
List list =upload.parseRequest(ServletActionContext.getRequest()); // 开始解析request对象中的表单数据
String id=ServletActionContext.getRequest().getParameter("id");
// list中是FileItem对象
// 一个FileItem用于封装一个上传的文件数据
if (list.size() >= 1) {
FileItem item = (FileItem) list.get(0);
// 获得上文件的路径名
String name = item.getName();
name = name.substring(name.lastIndexOf("\\") + 1);
// 把上传的文件数据写入本地文(服务器端)件文件夹的名字为upload
String path = "uploads";
// Sun的标准,服务器实现的API
ServletContext ctx = ServletActionContext.getServletContext();
path = ctx.getRealPath(path);
File file = new File(path);
if(!file.exists()){
System.out.println("创建文件夹");
file.mkdir();
}
System.out.println(path);
System.out.println(name);
//将文件放到指定的地方
item.write(new File(path, name));
}
} catch (Exception e) {
System.out.print("文件上传失败");
}
String savePath=ServletActionContext.getServletContext().getRealPath("")+"/uploads/";
try{
File folder=new File(savePath);
String filePath="C:\\Documents and Settings\\Administrator\\桌面\\R7TU[}VOOFGQQ~0)MY3IQJI.gif";//ServletActionContext.getRequest().getParameter("apkVO.apk.apkIcon");
if(!folder.exists()){
folder.mkdirs();
}
// File outFile=new File(savePath));
FileOutputStream outStream = new FileOutputStream(folder);
FileInputStream inStream = new FileInputStream(filePath);
byte[] buffer = new byte[1024];
int l = 0;
while ((l = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, l);
}
inStream.close();
outStream.close();
}catch (Exception e) {
}
}
action中方法是从网上找的,是两种方式取值,但是都取不到,我要把上传的图片或者文件写入服务器uploads文件夹下,在action中我不知道怎么取值和操作,弄了好久了,知道的大侠指点下,有具体的例子就更好,跪求啊。
[解决办法]
private File apkIcon;
private String apkIconName;
加上get set 方法 用apkIcon就是你想要得到的数据
[解决办法]
给你个参考,服务器端用的是cos上传
页面js
html:<input type="file" style="width:403px; height:19px; line-height:19px; border:1px solid #c9caca;" name="uploadify" id="uploadify" /><div id="fileQueue"></div><div id="resData" ></div>js:<script type="text/javascript">$(document).ready(function() { $("#uploadify").uploadify({ 'uploader' : '/js/uploadify/uploadify.swf', 'script' : '/upload.jsp',//action的路径 'method' : 'GET', //如果要传参数,就必须改为GET 'cancelImg' : '/js/uploadify/cancel.png', 'fileDataName' : 'uploadify',//和input的name属性值保持一致就好 'queueID' : 'fileQueue', 'folder' : 'uploadfiles', 'auto' : false, //选定文件后是否自动上传,默认false 'simUploadLimit' : 1, //一次同步上传的文件数目 'sizeLimit' : 1024*1024, //设置单个文件大小限制,单位为byte 'buttonImg' : '/js/uploadify/select.jpg', 'height' : '21', 'width' : '90', 'queueSizeLimit' : 1, //限制在一次队列中的次数(可选定几个文件)。默认值= 999,而一次可传几个文件有 simUploadLimit属性决定。 'fileDesc' : '支持格式:jpg', //如果配置了以下的'fileExt'属性,那么这个属性是必须的 'fileExt' : '*.jpg',//允许的格式 'onComplete' : function(event, ID, fileObj, response, data) { var filemark = document.getElementById('filename').value; document.getElementById('filename').value=filemark+","+response; }, 'onAllComplete' : function(event,data) { document.caseForm.submit(); } }); }); </script>