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(`