Browse Source

base64附件上传

mxs 11 months ago
parent
commit
28015c06b6
4 changed files with 45 additions and 22 deletions
  1. 6 3
      src/front/front.go
  2. 14 0
      src/spider/download.go
  3. 5 9
      src/spider/script.go
  4. 20 10
      src/web/templates/index.html

+ 6 - 3
src/front/front.go

@@ -126,8 +126,11 @@ func (f *Front) LoadIndex() {
 		if platform != "-1" {
 			query["platform"] = platform
 		}
-		if modifyuser != "-1" {
+		if modifyuser != "-1" { //指定人员检索
 			query["modifyuser"] = modifyuser
+			query["claimtype"] = map[string]interface{}{ //指定人员只能查询已认领和历史爬虫
+				"$gte": CLAIMTYPECLAIMED,
+			}
 		}
 		if priority != "-1" {
 			priorityRange := strings.Split(priority, "-")
@@ -728,9 +731,9 @@ func (f *Front) Assign() {
 			claimtype := qu.IntAll(l["claimtype"])
 			priority := qu.IntAll(l["priority"])
 			spiderimportant, _ := l["spiderimportant"].(bool)
-
 			if claimtype <= CLAIMTYPECLAIMED { //非历史爬虫分配
-				recovertime := CreateRecovertime(spiderimportant, priority)
+				//recovertime := CreateRecovertime(spiderimportant, priority)
+				recovertime := time.Now().Add(24 * 5 * time.Hour).Unix()
 				set = map[string]interface{}{
 					"claimtype":       CLAIMTYPECLAIMED,
 					"claimtime":       now,

+ 14 - 0
src/spider/download.go

@@ -22,6 +22,7 @@ import (
 
 var regImgStr = "\\.(JPG|jpg|jpeg|JPEG|GIF|gif|PNG|png|BMP|bmp|doc|docx|pdf|xls|xlsx)$"
 var regImg *regexp.Regexp
+var base64FileType = regexp.MustCompile(`.*?data:(image|document)/(png|jpg|jpeg|doc|docx|pdf|xlsx|xls);base64,`)
 
 //var GarbledCodeReg = regexp.MustCompile("[纰锟绲庯卞鍤滐銇鐟閫嚜鎯壐璩鏉彲鍋撅绺閲嗭絣鐤鏅盫鎽亰寰钂鎳鍒鐏宀婾嗚亗鎬憰攬鍙嶁鑻疐璁鐞鏇顭庮渾寮鑶剸鐙鈪鍐実綍擄鐒鐛绫瀵珐鍡閬栬憟灞綅顡韪忚鍓笉犵鍎鐥慪璜钀氭畯焛鎲顏熺崿鍜鍩僜鍚褰囶鍘櫥闀撹棢檅閯嗏絖灦戝閹涜闇鐮捒鈥璺籏绶澶鎷樺鍌絒嗘鍊ク鐧榦璞嚟鍢鐡瓼屾煢宄鑽畵鎭鈹鑷稛磭鏋孊钄狅絆鐘塋尟鑺絍绂绗嘐幇璨閾戭嚦鐫婅檴碭妤鑴厷挰鐜縒闆憁鏃鐗猒鏁橈顤秨哵鍧紛濊閷顥閺惪鐓嶈亙濠掗帾媞鏀慿瓙鎺闁鎰鑸鎹皝鍔鍦骞閶鍞挾鎴竗閵繉闋戞籅閽欏閼縲鐣呮墔顐ら憼檾锝挻顚炶姂剾鐑鐭潛閰涳楂懘願澧亣倴鐦忕嫄刡灏棙宓媐铇甀鏂楁従態瀹揕闃姒炲矕鏌眱鍍熸腹儝绱獻鐬鑵矦鍝嗗墹崇琛勭仈濴顒剭閴鍏鐝曨锛よ顧勯槈夊潏鐖垚矑鍛瞋終缂鐪鍠鏆妫攏顪娌濆嘇璎厫鍗閮顝給榇婂唭姘燁鏍鑹笎爑嚔槌瀣糵炵櫤鐎闅ゅ類鐨夛绋搕缃娉犲搻鐠儧鋸闉攜楸ㄨ埧欒闊垱鈩厔弐顠拵鑾]+")
 
@@ -431,3 +432,16 @@ func isAvailableFile(code string) bool {
 	}
 	return b
 }
+
+// DownloadIsBase64 下载是否是base64附件上传
+func DownloadIsBase64(url string) (bool, string, string) {
+	/*
+		附件base64类型
+		1、图片类 data:image/png;base64;data:image/jpg;base64;data:image/jpeg;base64
+		2、文档类 data:document/doc;base64;data:document/docx;base64;data:document/pdf;base64;data:document/xlsx;base64;data:document/xls;base64;
+	*/
+	if result := base64FileType.FindStringSubmatch(url); len(result) == 3 {
+		return true, result[2], base64FileType.ReplaceAllString(url, "")
+	}
+	return false, "", ""
+}

+ 5 - 9
src/spider/script.go

@@ -351,23 +351,19 @@ func (s *Script) LoadScript(site *string, downloadnode, script string, isfile ..
 		method := S.ToString(-4)
 		url := S.ToString(-5)
 		fileName := S.ToString(-6)
-		ishttps := strings.Contains(url, "https")
-		base64UrlReg := regexp.MustCompile("data:image")
-		indexArr := base64UrlReg.FindStringIndex(url)
+		isBase64, fileType, base64Url := DownloadIsBase64(url)
 		name, size, ftype, fid := "", "", "", ""
 		//base64 url
-		if len(indexArr) == 2 { //base64 http://www.mmjyjt.com/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqAAAAOwCAYAAAD
+		if isBase64 { //base64 http://www.mmjyjt.com/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqAAAAOwCAYAAAD
 			//截取base64
-			start := indexArr[0]
-			url = url[start:]
-			fileName = "文件下载.jpg"
-			index := strings.Index(url, ",")
-			dec := base64.NewDecoder(base64.StdEncoding, strings.NewReader(url[index+1:]))
+			fileName = "文件下载." + fileType
+			dec := base64.NewDecoder(base64.StdEncoding, strings.NewReader(base64Url))
 			ret, err := io.ReadAll(dec)
 			if err == nil && len(ret) > 0 {
 				url, name, size, ftype, fid = sp.UploadFile(s.SCode, fileName, "", ret)
 			}
 		} else { //正常url
+			ishttps := strings.Contains(url, "https")
 			var mycookie []*http.Cookie
 			if cookie != "{}" {
 				json.Unmarshal([]byte(cookie), &mycookie)

+ 20 - 10
src/web/templates/index.html

@@ -661,7 +661,7 @@
 				opt=opt+opt1+opt2+opt3+opt4;
 			{{end}}
 			var select="<div class='form-group'><label for='name'>状态:</label>"+
-				"<select id='type_state' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				"<select id='type_state' onchange='checkclick(this,\"\")' class='form-control input-sm'>"+
 				opt+
 				"</select></div>";
 			$("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
@@ -673,14 +673,14 @@
 				spiderEvent+="<option value='"+events[k]+"'>"+events[k]+"</option>";
 			}
 			var selectEvent="<div class='form-group'><label for='name'>节点:</label>"+
-				"<select id='task_event' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				"<select id='task_event' onchange='checkclick(this,\"\")' class='form-control input-sm'>"+
 				spiderEvent+
 				"</select></div>";
 			$("#spider_filter").prepend("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
 			$("#spider_filter").prepend(selectEvent);
 			//类型
 			var infoformat="<div class='form-group'><label for='name'>类型:</label>"+
-					"<select id='infoformat' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+					"<select id='infoformat' onchange='checkclick(this,\"\")' class='form-control input-sm'>"+
 					"<option value='-1'>全部</option>"+
 					"<option value='1'>招标</option>"+
 					"<option value='2'>拟建/审批</option>"+
@@ -691,7 +691,7 @@
 			$("#spider_filter").prepend(infoformat);
 			//平台
 			var platform="<div class='form-group'><label for='name'>平台:</label>"+
-				"<select id='platform' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				"<select id='platform' onchange='checkclick(this,\"\")' class='form-control input-sm'>"+
 				"<option value='-1'>全部</option>"+
 				"<option value='golua平台'>golua平台</option>"+
 					"<option value='chrome'>chrome</option>"+
@@ -722,14 +722,14 @@
 				}
 			}
 			var selectModifyuser="<div class='form-group'><label for='name'>维护人:</label>"+
-				"<select id='modifyuser' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+				"<select id='modifyuser' onchange='checkclick(this,\"modifyuser\")' class='form-control input-sm'>"+
 				modifyuser+
 				"</select></div>";
 			$("#spider_filter").prepend("&nbsp;&nbsp;");
 			$("#spider_filter").prepend(selectModifyuser);
 			// 认领状态
 			var claimtype="<div class='form-group'><label for='name'>认领状态:</label>"+
-					"<select id='claimtype' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+					"<select id='claimtype' onchange='checkclick(this,\"claimtype\")' class='form-control input-sm'>"+
 					"<option value='-1'>全部</option>"+
 					"<option value='0'>待认领</option>"+
 					"<option value='1'>已认领</option>"+
@@ -740,7 +740,7 @@
 			{{end}}
 			// 优先级priority
 			var priority="<div class='form-group'><label for='name'>优先级:</label>"+
-					"<select id='priority' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+					"<select id='priority' onchange='checkclick(this,\"\")' class='form-control input-sm'>"+
 					"<option value='-1'>全部</option>"+
 					"<option value='0-200'>200以下</option>"+
 					"<option value='200-500'>200-500</option>"+
@@ -752,7 +752,6 @@
 			$("#spider_wrapper .col-sm-6").css({width:"100%"});//样式
 		});
 	})
-
 	function showcheck(e){
 		var tr = $(e).closest('tr');
 		var row = ttable.row(tr);
@@ -819,7 +818,16 @@
 		);
 	}
 
-	function checkclick(me){
+	function checkclick(event,tp){
+		var claimtype = $("#claimtype").val()
+		var modifyuser = $("#modifyuser").val()
+		if (tp == "modifyuser" && modifyuser != -1 && claimtype == 0){
+			alert("指定维护人时,不能筛选其待认领的爬虫!")
+			return
+		}else if (tp == "claimtype" && modifyuser != -1 && claimtype == 0){
+			alert("指定维护人时,不能筛选其待认领的爬虫!")
+			return
+		}
 		ttable.ajax.reload();
 	}
 	function selectrow(me){
@@ -1235,7 +1243,9 @@
             "<option disabled value='10'>已上线</option>"+
           +"</select>";
   	};
-{{end}}
+	{{end}}
+
+
 </script>
 </div>
 {{include "bottom.html"}}