diff --git a/base/web/cache.go b/base/web/cache.go index 2e253025..ab903197 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -107,19 +107,29 @@ func _cache_upload(m *ice.Message, r *http.Request) (kind, name, file, size stri func _cache_download(m *ice.Message, r *http.Response) (file, size string) { defer r.Body.Close() - progress, _ := m.Optionv("progress").(func(int, int)) - total := kit.Int(kit.Select("1", r.Header.Get("Content-Length"))) if f, p, e := kit.Create(path.Join("var/tmp", kit.Hashs("uniq"))); m.Assert(e) { size, buf := 0, make([]byte, 1024) for { if n, _ := r.Body.Read(buf); n > 0 { f.Write(buf[0:n]) - if size += n; progress != nil { - progress(size, total) - } else { + switch size += n; cb := m.Optionv("progress").(type) { + case []string: + m.Richs(cb[0], cb[1], cb[2], func(key string, value map[string]interface{}) { + value = value[kit.MDB_META].(map[string]interface{}) + + s := size * 100 / total + if s != kit.Int(value[kit.MDB_STEP]) && s%10 == 0 { + m.Log_IMPORT(kit.MDB_FILE, path.Base(cb[2]), kit.MDB_STEP, s, kit.MDB_SIZE, kit.FmtSize(int64(size)), kit.MDB_TOTAL, kit.FmtSize(int64(total))) + } + value[kit.MDB_STEP], value[kit.MDB_SIZE], value[kit.MDB_TOTAL] = kit.Format(s), size, total + }) + case func(int, int): + cb(size, total) + default: m.Log_IMPORT(kit.MDB_FILE, p, "per", size*100/total, kit.MDB_SIZE, kit.FmtSize(int64(size)), "total", kit.FmtSize(int64(total))) } + } else { f.Close() break diff --git a/base/web/route.go b/base/web/route.go index 506a8b3d..30d83d12 100644 --- a/base/web/route.go +++ b/base/web/route.go @@ -46,7 +46,7 @@ func init() { ROUTE: {Name: ROUTE, Help: "路由器", Value: kit.Data(kit.MDB_SHORT, kit.MDB_ROUTE)}, }, Commands: map[string]*ice.Command{ - ROUTE: {Name: "route route ctx cmd auto 启动 添加", Help: "路由", Action: map[string]*ice.Action{ + ROUTE: {Name: "route route ctx cmd auto 添加", Help: "路由", Action: map[string]*ice.Action{ "inputs": {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) { switch arg[0] { case "cmd": @@ -117,9 +117,9 @@ func init() { kit.MergeURL(m.Option(ice.MSG_USERWEB), "pod", kit.Keys(m.Option("pod", value[kit.MDB_ROUTE])))) switch value[kit.MDB_TYPE] { case MYSELF, SERVER: - m.PushRender("action", "button", "创建", "启动") + m.PushRender("action", "button", "启动") case WORKER: - m.PushRender("action", "button", "创建", "结束") + m.PushRender("action", "button", "结束") } }) m.Sort(kit.MDB_ROUTE) diff --git a/meta.go b/meta.go index 32802442..7d262606 100644 --- a/meta.go +++ b/meta.go @@ -90,7 +90,14 @@ func (m *Message) Push(key string, value interface{}, arg ...interface{}) *Messa // 查找数据 var v interface{} switch k { - case kit.MDB_KEY, kit.MDB_ZONE, kit.MDB_HASH: + case "action": + list := []string{} + for _, k := range kit.Simple(m.Optionv(MSG_ACTION)) { + list = append(list, fmt.Sprintf(``, k)) + } + v = strings.Join(list, "") + + case kit.MDB_KEY, kit.MDB_HASH: if key != "" { v = key break diff --git a/misc.go b/misc.go index a73bc94f..cbce850f 100644 --- a/misc.go +++ b/misc.go @@ -77,10 +77,12 @@ func (m *Message) PushRender(key, view, name string, arg ...string) *Message { list = append(list, fmt.Sprintf(``, k)) } m.Push(key, strings.Join(list, "")) + case "video": + m.Push(key, fmt.Sprintf(`