Bladeren bron

文件上传有后端改到前端

user5 4 jaren geleden
bovenliggende
commit
767c223c0c

+ 18 - 17
src/main/java/com/jeeplus/modules/filePreview/PreviewController.java

@@ -146,31 +146,32 @@ public class PreviewController extends BaseController {
         // 只有 RAM用户(子账号)才能调用 AssumeRole 接口
         // 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
         // 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys
-        String accessKeyId =  "LTAIzG5m63BhoGa7";//Global.getAccessKeyId();
-        String accessKeySecret = "J0mEs8AYtgGWrfC54cSGgUXHCOOjvS"; //Global.getAccessKeySecret();
+        String accessKeyId =  "LTAI5tBBnQdpZapU28Ds89fb";//Global.getAccessKeyId();
+        String accessKeySecret = "A37CuoALjoxCjPolzRm3ct5o8UHILF"; //Global.getAccessKeySecret();
 
         // RoleArn 需要在 RAM 控制台上获取
-        String roleArn = "acs:ram::1251733816552326:role/stsrole";
-        long durationSeconds = Long.parseLong("900");
+        String roleArn = "acs:ram::1132186699724035:role/yf";
+        long durationSeconds = Long.parseLong("3600");
         String policy = "{\n" +
-                "    \"Version\": \"1\", \n" +
-                "    \"Statement\": [\n" +
-                "        {\n" +
-                "            \"Action\": [\n" +
-                "                \"oss:*\"\n" +
-                "            ], \n" +
-                "            \"Resource\": [\n" +
-                "                \"acs:oss:*:*:*\" \n" +
-                "            ], \n" +
-                "            \"Effect\": \"Allow\"\n" +
-                "        }\n" +
-                "    ]\n" +
+                "  \"Version\": \"1\",\n" +
+                "  \"Statement\": [\n" +
+                "    {\n" +
+                "      \"Effect\": \"Allow\",\n" +
+                "      \"Action\": [\n" +
+                "        \"oss:*\"\n" +
+                "      ],\n" +
+                "      \"Resource\": [\n" +
+                "        \"acs:oss:*:*:*\"\n" +
+                "      ],\n" +
+                "      \"Condition\": {}\n" +
+                "    }\n" +
+                "  ]\n" +
                 "}";
 //        String policy = null;
         // RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
         // 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
         // 具体规则请参考API文档中的格式要求
-        String roleSessionName = "alice-001";
+        String roleSessionName = "yf";
         // 此处必须为 HTTPS
         ProtocolType protocolType = ProtocolType.HTTPS;
         try {

+ 22 - 11
src/main/java/com/jeeplus/modules/sys/web/WorkattachmentController.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.sys.web;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.common.utils.MyBeanUtils;
@@ -47,7 +48,7 @@ public class WorkattachmentController extends BaseController {
 
 	@Autowired
 	private WorkattachmentService workattachmentService;
-	
+
 	@ModelAttribute
 	public Workattachment get(@RequestParam(required=false) String id) {
 		Workattachment entity = null;
@@ -59,14 +60,14 @@ public class WorkattachmentController extends BaseController {
 		}
 		return entity;
 	}
-	
+
 	/**
 	 * 附件信息列表页面
 	 */
 	@RequiresPermissions("sys:workattachment:list")
 	@RequestMapping(value = {"list", ""})
 	public String list(Workattachment workattachment, HttpServletRequest request, HttpServletResponse response, Model model) {
-		Page<Workattachment> page = workattachmentService.findPage(new Page<Workattachment>(request, response), workattachment); 
+		Page<Workattachment> page = workattachmentService.findPage(new Page<Workattachment>(request, response), workattachment);
 		model.addAttribute("page", page);
 		return "modules/sys/workattachmentList";
 	}
@@ -148,6 +149,16 @@ public class WorkattachmentController extends BaseController {
 			workattachment.setAttachmentUser(UserUtils.getUser().getId());
 			workattachment.setCompanyId(UserUtils.getSelectCompany().getId());
 			workattachment.setUrl(url);
+			switch (uploadMode){
+				case "1":
+
+					break;
+				case "2":
+					workattachment.setUrl(Global.getConfig("aliyunUrl")+workattachment.getUrl());
+					workattachment.setTemporaryUrl(new OSSClientUtil().getFileTemporaryLookUrl(workattachment.getUrl()));
+					break;
+
+			}
 			if(StringUtils.isNotBlank(workattachment.getAttachmentId())){
 				if(StringUtils.isBlank(workattachment.getId())){
 					workattachmentService.insertOnWorkAttachment(workattachment);
@@ -240,7 +251,7 @@ public class WorkattachmentController extends BaseController {
 		map.put("str","success");
 		return map;
 	}
-	
+
 	/**
 	 * 删除附件信息
 	 */
@@ -251,7 +262,7 @@ public class WorkattachmentController extends BaseController {
 		addMessage(redirectAttributes, "删除附件信息成功");
 		return "redirect:"+Global.getAdminPath()+"/sys/workattachment/?repage";
 	}
-	
+
 	/**
 	 * 批量删除附件信息
 	 */
@@ -265,7 +276,7 @@ public class WorkattachmentController extends BaseController {
 		addMessage(redirectAttributes, "删除附件信息成功");
 		return "redirect:"+Global.getAdminPath()+"/sys/workattachment/?repage";
 	}
-	
+
 	/**
 	 * 导出excel文件
 	 */
@@ -324,7 +335,7 @@ public class WorkattachmentController extends BaseController {
     public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
 		try {
             String fileName = "附件信息数据导入模板.xlsx";
-    		List<Workattachment> list = Lists.newArrayList(); 
+    		List<Workattachment> list = Lists.newArrayList();
     		new ExportExcel("附件信息数据", Workattachment.class, 1).setDataList(list).write(response, fileName).dispose();
     		return null;
 		} catch (Exception e) {
@@ -332,8 +343,8 @@ public class WorkattachmentController extends BaseController {
 		}
 		return "redirect:"+Global.getAdminPath()+"/sys/workattachment/?repage";
     }
-	
-	
-	
 
-}
+
+
+
+}

+ 4 - 4
src/main/webapp/static/common/js/common.js

@@ -78,9 +78,9 @@ function preview(title,url,width,height,type){
     }
     //var u = 'http://ow365.cn/?i=14411&furl='+url;
     if(url.indexOf("http://gangwan-app.oss-cn-hangzhou.aliyuncs.com")>-1) {
-        var u = 'http://www.xdocin.com/xdoc?_func=to&_format=html&_cache=true&_xdoc='+encodeURIComponent(url);
+        var u = 'https://view.officeapps.live.com/op/view.aspx?src='+encodeURIComponent(url);
     }else{
-        //你的文档地址
+        /*//你的文档地址
         var file = url;
         //XDOC文档预览服务地址
         var xurl = "https://view.xdocin.com/xdoc?_xdoc=";
@@ -101,8 +101,8 @@ function preview(title,url,width,height,type){
         //传入预览参数
         for (var a in ops) {
             xurl += "&" + encodeURIComponent(a) + "=" + encodeURIComponent(ops[a]);
-        }
-        u = xurl;
+        }*/
+        u = 'https://view.officeapps.live.com/op/view.aspx?src='+encodeURIComponent(url);;
     }
 
     function encodeContent(data){

File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/static/oss/lib/plupload-2.1.2/js/plupload.full.min.js


+ 147 - 9
src/main/webapp/static/oss/ossupload.js

@@ -7,6 +7,16 @@ var requestUrl;
 var returnUrl;
 var str;
 
+var nowTime = new Date();
+nowTime.setTime(nowTime.getTime());
+var month = nowTime.getMonth()+1
+var day = nowTime.getDate();
+if(day<10){
+    day = "0" + day;
+}
+var today = nowTime.getFullYear()+"/" + month + "/" + day + "/";
+
+
 /*function multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt) {
     console.log("-----------------------start");
     console.log("-----------------------"+realPath);
@@ -78,6 +88,10 @@ function multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,upload
         multitest(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt);
 };
 function multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt,idx,prefix,currentUser) {
+
+    console.log("-----------------------start");
+    console.log("-----------------------"+realPath);
+
     file.name.replace(" ","")
     file.name.replace(/—/g,"")
     var fileName = file.name;
@@ -93,12 +107,30 @@ function multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,upload
     fileName = fileName.replace("……","")
     var dfl=new File([file],fileName,{type:file.type});
     file = dfl
-    /*console.log(file.name.indexOf("—")!=-1);
-    console.log("-----------------------start");*/
-    if(cpt == 1)
-        multitestFlag(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt,idx,prefix,currentUser);
-    else
-        multitest(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt,idx,prefix,currentUser);
+
+    requestUrl = realPath+"/previewController/getAccess";
+    OSS.urllib.request(requestUrl, {method: 'GET'}, function (err, response) {
+        if (err) {
+            return alert(err);
+        }
+        try {
+            result = JSON.parse(response);
+        } catch (e) {
+            errmsg = 'parse sts response info error: ' + e.message;
+            return alert(errmsg);
+        }
+        console.log("---------result"+result);
+        client = new OSS.Wrapper({
+            accessKeyId: result.AccessKeyId,
+            accessKeySecret: result.AccessKeySecret,
+            stsToken: result.SecurityToken,
+            bucket: result.Bucket,
+            endpoint: result.Endpoint,
+            timeout:'30000'
+        });
+        storeAs = "attachment-file/" + storeAs +"/"+today+new Date().getTime()+ file.name;
+        multitest(client, storeAs, file,attachmentId,attachmentFlag,uploadPath.replace('http://dmtest-test.oss-cn-shanghai.aliyuncs.com', result.AliyunUrl),divId,size, cpt);
+    })
 };
 
 function fBmultipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size, cpt,idx,prefix,currentUser) {
@@ -431,6 +463,112 @@ function multitestFlag (storeAs, file,attachmentId,attachmentFlag,uploadPath,div
     })
 };
 
+function multitest (ossClient, storeAs, file,attachmentId,attachmentFlag,uploadPath,divId, size,cpt) {
+    var names =  storeAs.split("/");
+    var name = names[names.length-1];
+    ossClient.multipartUpload(storeAs, file,{
+        partSize: 1 * 1024 * 1024,
+        parallel: 5,
+        progress: function* (percent, cpt) {
+            var p = Math.floor(percent*100);
+            $("#jindutiao"+divId).attr("style","width: "+p+"%");
+            $("#jindutiao"+divId).attr("aria-valuenow",p+"%");
+            $("#baifenbi"+divId).html(p+"%");
+            $("#fileName"+divId).html(file.name);
+            checkpoint_temp = cpt;
+        }
+    }).then(function (result) {
+        var fileLocation = "";
+        var lookUrl = "";
+        //获取文件存储位置(0:本地;1:百度云;2:阿里云)
+        $.ajax({
+            type:"get",
+            url:realPath+"/bos/getFileStorageLocation",
+            async: false,
+            success:function(data){
+                fileLocation = data.fileLocation;
+            }
+        });
+
+        returnUrl = realPath+"/sys/workattachment/saveAttachment";
+        $.ajax({
+            type:'post',
+            url:returnUrl,
+            data:{
+                "attachmentName":file['name'],
+                "attachmentId":attachmentId,
+                "attachmentFlag":attachmentFlag,
+                "url":"/"+storeAs
+            },
+            success:function(data){
+                var lowerType = data.type.toLowerCase();
+                if(data.status=="Success"){
+                    parent.layer.msg("上传成功!",{icon:1});
+                    var lenght =$(".trIdAdds").length;
+                    if (size != 0){
+                        lenght += size;
+                    }
+                    var addFile = "addFile"+divId;
+                    var str = '<tr class="trIdAdds">'+
+                        '<td class="text-center">' ;
+                    if(2 == fileLocation){
+                        $.ajax({
+                            type:"post",
+                            async:false,
+                            url:realPath+"/workfullmanage/workFullManage/getFileTemporaryLookUrl",
+                            data:{"file":data.url,},
+                            success:function(result){
+                                lookUrl = result.lookUrl;
+                                if (isContains("jpg,png,gif,bmp,jpeg",lowerType)){
+                                    str = str +'<img src="'+lookUrl+'" width="50" height="50" onclick="openDialogView(\'预览\',\''+ '/a/sys/picturepreview/picturePreview?url=' +lookUrl+ '\',\'90%\',\'90%\')" alt="'+data.attachmentName+'"/>';
+                                }else if(isContains("pdf",lowerType)){
+                                    str = str + '<a class="attention-info" href="javascript:void(0)" onclick="preview(\'预览\',\''+lookUrl+'\',\'90%\',\'90%\',\'1\')">'+data.attachmentName+'</a>';
+                                }else {
+                                    str = str + '<a class="attention-info" href="javascript:void(0)" onclick="preview(\'预览\',\''+lookUrl+'\',\'90%\',\'90%\')">'+data.attachmentName+'</a>';
+                                }
+                            }
+                        });
+
+                    }else{
+                        if (isContains("jpg,png,gif,bmp,jpeg",lowerType)){
+                            str = str +'<img src="'+data.url+'" width="50" height="50" onclick="openDialogView(\'预览\',\''+realPath+ '/a/sys/picturepreview/picturePreview?url=' +data.url+ '\',\'90%\',\'90%\')" alt="'+data.attachmentName+'"/>';
+                        }else if(isContains("pdf",lowerType)){
+                            str = str + '<a class="attention-info" href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'90%\',\'90%\',\'1\')">'+data.attachmentName+'</a>';
+                        }else {
+                            str = str + '<a class="attention-info" href="javascript:void(0)" onclick="preview(\'预览\',\''+data.url+'\',\'90%\',\'90%\')">'+data.attachmentName+'</a>';
+                        }
+                    }
+                    str = str +'</td>'+
+                        '<td >'+data.createByName+'</td>'+
+                        '<td >'+data.createDate+
+                        '<input name="workAttachments['+lenght+'].id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value=""/>'+
+                        '<input name="workAttachments['+lenght+'].attachmentId" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentId+'"/>'+
+                        '<input name="workAttachments['+lenght+'].url" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.url+'"/>'+
+                        '<input name="workAttachments['+lenght+'].temporaryUrl" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.temporaryUrl+'"/>'+
+                        '<input name="workAttachments['+lenght+'].attachmentName" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentName+'"/>'+
+                        '<input name="workAttachments['+lenght+'].createBy.id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.createBy+'"/>'+
+                        '<input name="workAttachments['+lenght+'].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.type+'"/>'+
+                        '<input name="workAttachments['+lenght+'].attachmentFlag" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentFlag+'"/>'+
+                        '</td>'+
+                        '<td class="op-td">'+
+                        '<div class="op-btn-box">' +
+                        '<a href="javascript:location.href=\''+realPath+'/a/workfullmanage/workFullManage/downLoadAttach?file=\'+encodeURIComponent(\''+data.url+'\');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>'+
+                        '<a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,\''+realPath+'/a/sys/workattachment/deleteFileFromAliyun?url='+encodeURIComponent(data.url)+'&id='+data.id+'&type=2\',\''+addFile+'\',\''+divId+'\')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i>&nbsp;删除</a>'+
+                        '</div>' +
+                        '</td>'+
+                        '</tr>';
+                    $("#file"+divId).append(str);
+                }else {
+                    parent.layer.msg("上传失败!",{icon:2});
+                }
+            }
+        })
+    }).catch(function (err) {
+        console.log("err------ err:");
+        console.log(err);
+    });
+};
+/*
 function multitest (storeAs, file,attachmentId,attachmentFlag,uploadPath,divId, size,cpt) {
     var formdata = new FormData();
     formdata.append("storeAs",storeAs);
@@ -529,8 +667,8 @@ function multitest (storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,
                                 '</div>' +
                                 '</td>'+
                                 '</tr>';
-                            /*console.log("file:"+divId);
-                            console.log("str="+str);*/
+                            /!*console.log("file:"+divId);
+                            console.log("str="+str);*!/
                             $("#file"+divId).append(str);
                             $("#flagFile").val(true);
                             var p = Math.floor(1*100);
@@ -548,7 +686,7 @@ function multitest (storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,
             }
         }
     })
-};
+};*/
 
 /*
 function multitest (ossClient, storeAs, file,attachmentId,attachmentFlag,uploadPath,divId, size,cpt) {

+ 7 - 0
src/main/webapp/webpage/include/head.jsp

@@ -57,6 +57,13 @@
 <link rel="stylesheet" type="text/css" href="${ctxStatic}/webuploader-0.1.5/webuploader.css">
 <script type="text/javascript" src="${ctxStatic}/webuploader-0.1.5/webuploader.js"></script>
 
+<%--引入oss相关js--%>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/base64.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/plupload-2.1.2/js/plupload.full.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/crypto/crypto.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/hmac/hmac.js"></script>
+<script type="text/javascript" src="${ctxStatic}/oss/lib/crypto1/sha1/sha1.js"></script>
+
 
 <!-- 引入自定义文件 -->
 <script src="${ctxStatic}/common/mustache.min.js" type="text/javascript"></script>