uploadify文件上传整理

1.页面配置

     <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="my" uri="/mytags"%><%String dir = request.getParameter("d");%>
<%
String p = request.getParameter("p");
String height = request.getParameter("height")==null?"350":request.getParameter("height");
%>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<my:head lhgdialog="true">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>附件上传</title>
<link href="${base }/commons/uploadify/default.css" rel="stylesheet" type="text/css" />
<link href="${base }/commons/uploadify/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="${base }/commons/uploadify/swfobject.js"></script>
<script type="text/javascript" src="${base }/commons/uploadify/jquery.uploadify.v2.1.0.min.js"></script>


<script type="text/javascript">
$(document).ready(function(){
var api = frameElement.api;
var uploadOk = function(file){
if(typeof(api) !== "undefined" && api !== null && api.data){
api.data.files = api.data.files||new Array();
api.data.files.push(file);
}
};
var imgTypes = "*.gif;*.jpg;*.jpeg;*.png;*.bmp";
var imgDesc = "图片文件("+imgTypes+")";
var mediaTypes = "*.swf;*.flv;*.mp3;*.wav;*.wma;*.wmv;*.mid;*.avi;*.mpg;*.asf;*.rm;*.rmvb";
var mediaDesc = "媒体文件(" + mediaTypes + ")";
var flashTypes = "*.swf;*.flv";
var flashDesc = "Flash文件("+flashTypes+")";
var allTypes = "*.*";
var allDesc = "所有文件("+allTypes+")";
var dir = "<%=dir==null?"file":dir%>";
var fileTypes;
var fileDesc;
if("image" == dir){
fileTypes = imgTypes;fileDesc=imgDesc;
}else if("media" == dir){
fileTypes = mediaTypes;fileDesc=mediaDesc;
}else if("flash" == dir){
fileTypes = flashTypes;fileDesc=flashDesc;
}else{
fileTypes = allTypes;fileDesc=allDesc;
}
$("#imgFile").uploadify({
uploader:'${base }/commons/uploadify/uploadify.swf',
script:'${base}/base/file.do?add&jsessionid=<%=session.getId()%>',
//jsessionid=....是解决火狐上面获取不到sessionid上传出错的
        cancelImg:'${base }/commons/uploadify/cancel.png',//取消按钮图片  
        //向后台传的数据  
        fileDesc: '请选择'+fileDesc+'文件', //上传文件类型说明  
        fileExt: fileTypes, //控制可上传文件的扩展名,启用本项时需同时声明fileDesc
        method:'post', //如果向后台传输数据,必须是get  
        //scriptData:{'ywlx':$('#ywlx').val()},//这是页面初始化时获取已经存在的值传递方式(静态方式)
        queueID: 'fileQueue',//和存放队列的DIV的id一致
        fileDataName: 'imgFile', //和以下input的name属性一致
        scriptData: {//动态传递表单参数
    'dir':dir, "isCheckRole":"<%=request.getParameter("isCheckRole")==null?"1":request.getParameter("isCheckRole")%>", "path":"<%=p%>"
    },
        multi: true, //是否支持多文件上传
        simUploadLimit: 5, //一次同步上传的文件数目
        queueSizeLimit: 5, //队列中同时存在的文件个数限制
        auto:false,//选定文件后是否自动上传,默认false  
        sizeLimit: 100*1024*1024,//文件上传的大小限制(这边是100M),单位是字节  
        buttonText:'选择文件',//浏览按钮上的文字  
        onComplete:function(event, queueID, fileObj, serverData, data) { //当上传完成后的回调函数,ajax方式哦~~  
        server_data =decodeURIComponent(serverData).replace(/\+/g, ' ');//.replace(/\\/g, '\\\\');
        var json_msg =jQuery.parseJSON(server_data); 
        if(json_msg.error == 0){
        $.dialog({
title : "消息提示",
content : "上传成功 !",
max: false,
min: false,
lock: true,
icon:"success.gif",
time:2,
parent:$dialogParent()
});
        //$.dialog.tips("上传成功",1,"tips.gif");
        $("#fid").val(json_msg.id);
        $("#fname").val(json_msg.name);
        $("#furl").val(json_msg.url);
    }else{
    //$.dialog.tips("上传失败,错误原因为:"+json_msg.message,1,"tips.gif");
    $.dialog({
title : "消息提示",
content : "上传失败,错误原因为:"+json_msg.message,
max: false,
min: false,
lock: true,
icon:"success.gif",
time:2,
parent:$dialogParent()
});
    }
        //失败不需要执行下面内容
        if(json_msg.error == 0){
        <%String f = request.getParameter("f");%>
        <%if(f != null && f.trim().length() > 0){%>
        if(window.parent.menuIframeId && window.parent.menuIframeId.<%=f.trim()%>){
        window.parent.menuIframeId.<%=f.trim()%>(json_msg.id,json_msg.name,json_msg.url);
        }else if(window.opener.menuIframeId && window.opener.menuIframeId.<%=f.trim()%>){
        window.opener.menuIframeId.<%=f.trim()%>(json_msg.id,json_msg.name,json_msg.url);
        }<%}%>
        }
   
        },  
        onSelect: function(e, queueId, fileObj) {  
           /**alert("唯一标识:" + queueId + "\r\n" + 
                          "文件名:" + fileObj.name + "\r\n" + 
                          "文件大小:" + fileObj.size + "\r\n" + 
                          "创建时间:" + fileObj.creationDate + "\r\n" + 
                          "最后修改时间:" + fileObj.modificationDate + "\r\n" + 
                          "文件类型:" + fileObj.type 
                    );*/
  
        },  
        onError: function(event, queueID, fileObj, errorObj) {
        if (errorObj.type === "File Size"){
        $.dialog.tips("超过文件上传大小限制(100M)",1,"tips.gif");
            return;
          }
        $.dialog.alert("文件:" + fileObj.name + " 上传失败");
        }  
});
});
</script>
<style>


.ui_loading{


       z-index: 1111111;


}


</style>
</my:head>
<body style="background:#F6F9FF;">
<form action="${base}/base/file.do?add" method="post" enctype="multipart/form-data">
<table width="100%">
<tr>
<td colspan="2"><div id="fileQueue" style="overFlow-y:auto;height: <%=height%>px;width: 100%;"></div></td>
</tr>
<tr>
<td width="26%"><input type="file" name="imgFile" id="imgFile"/></td>
<td>
<input type="button" class="orange button" style="width:100px;height:30px;" οnclick="jQuery('#imgFile').uploadifyUpload();" value="开始上传"/>
<!--<input type="button" class="orange button" οnclick="jQuery('#imgFile').uploadifyClearQueue();" value="取消上传"/>-->
</td>
</tr>
</table>
</form>
<input type="hidden" id="fid" >
<input type="hidden" id="fname" >
<input type="hidden" id="furl" >
</body>
</html>

2.后台代码

   @ResponseBody
@RequestMapping(params = ("add"))
public String add(String path, String dir, String isCheckRole, //File imgFile,
MultipartFile imgFile, HttpServletRequest request,
HttpServletResponse response) throws RunanException {
Object message = null;
Map<String, Object> result = new HashMap<String, Object>();
try {
SessionUser user = SessionManager.getSessionUser();
if (user == null) {
message = "用户未登录或登录超时";
}
if (message != null) {
result.put("error", 1);
result.put("message", message);
return JSONObject.toJSONString(result);
}
String fileName = imgFile.getOriginalFilename();
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1)
.toLowerCase();
String name = dir + "_"
+ DateUtils.dateToString(new Date(), "yyyyMMddHHmmss")
+ "_" + new Random().nextInt(1000) + "." + fileExt;
String md5 = MD5Util.getFileMD5String(imgFile.getInputStream());
if (StringUtils.isBlank(path)) {
path = "/";
}
path = parsePath(path);
if (!"0".equals(isCheckRole)
&& !filePermissionService.canWrite(path)) {
result.put("error", 1);
result.put("message", "没有权限上传文件到该目录");
//return JSONObject.toJSONString(result);
response.setCharacterEncoding("UTF-8");
       response.setHeader("content-type", "text/html;charset=UTF-8");
       String r = (JSONObject.toJSONString(result));
       try {
           r = new String(URLEncoder.encode(r, "UTF-8"));
       } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
       }
       return r;



CommonsMultipartFile cf = (CommonsMultipartFile) imgFile;
DiskFileItem fi = (DiskFileItem) cf.getFileItem();
File f = fi.getStoreLocation();


// long length = ((File) imgFile).length();
long length = f.length();
// fileService.storage((File) imgFile, name);
try {
fileService.storage(f, name);
} catch (Exception ex) {
/* 增加接口直接存储内存中的文件。 */
fileService.storage(imgFile, name);
}
int[] pids = ArrayUtils.toIntArray(path.split("/"));
int pid = 0;
if (pids != null && pids.length > 0) {
pid = pids[pids.length - 1];
}
PFFile file = new PFFile();
file.setFilePath(path);
file.setId(name);
file.setMd5(md5);
file.setName(fileName);
file.setUploadTime(new Date());
file.setParentId(pid);
file.setKeyWord(fileName);
file.setFileType(fileExt);
file.setFileSize(new Long(length).intValue());
file.setFlag(0);
if (user != null) {
file.setUserid(user.getUserid());
}
fileService.addFile(file);
result.put("error", 0);
// String url =
// request.getRequestURI().replaceFirst("add\\.action","download.action");
String url = request.getRequestURI() + "?download";
if (url.lastIndexOf("&jsessionid") > 0) {
url = url.substring(0, url.lastIndexOf("&jsessionid"));
}
result.put("url", url + "&f=" + name);
result.put("name", fileName);
result.put("id", name);
} catch (Exception e) {
result.put("error", 1);
log.debug(e);
}
//return JSONObject.toJSONString(result);
try {
response.setCharacterEncoding("UTF-8");
        response.setHeader("content-type", "text/html;charset=UTF-8");
        String r = (JSONObject.toJSONString(result));
        r = new String(URLEncoder.encode(r, "UTF-8"));
        return r;
        } catch (Exception e) {
            e.printStackTrace();
        }
return null;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值