Foxtable(狐表)用户栏目专家坐堂 → 请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,?


  共有143人关注过本帖树形打印复制链接

主题:请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,?

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1305 积分:10090 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,?  发帖心情 Post By:2018/11/9 10:56:00 [只看该作者]

 如下代码,上传文件进度显示100%后,弹出上传成功提示要等10秒左右,不知为何?

If e.postvalues.count =0 Then
                wb.AddTopTips("","toptip1","") '用于显示动态错误提示
                wb.AddForm("","form1","HRLogsAddNew.htm")
                With wb.AddInputGroup("form1","ipg0","日志标题")
                    With .AddTextArea("rzbt",1)
                        .Placeholder = "名称或摘要:"
                        .Required = "true"
                    End With
                End With
                
                With wb.AddInputGroup("form1","ipg1","日志内容")
                    .AddTextArea("rznr",3).Placeholder = "此处输入日志内容,字数不限!"
                End With
                
                With wb.AddInputGroup("form1","ipg2","不选择默认当天")
                    .AddInput("sjrq","事件日期:","date")
                End With
                
                With wb.AddInputGroup("form1","ipg3","文件上传") '文件上传
                    With .AddUploader("up1","选择文件:",True)
                        .TextPosition = 0 '标题靠左
                    End With
                End With
                
                With wb.AddButtonGroup("form1","btg1",True)
                    .Add("btn1", "提交", "button").Attribute= "" '调用js函数上传
                End With
                
                wb.AddToast("","tst1", "正在上传",1)
                wb.AddToast("","tst2", "上传成功",0)
                wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
                wb.AppendHTML("<script src='./lib/HRlogsMsg.js'></script>") '引入脚本文件
                
            Else
                If e.PostValues.ContainsKey("rzbt") Then
                    
                    
                    '生成编号
                    Dim c md As new SQLCommand
                    cmd.Co nnecti
                    cmd.C ommandText = "s elect Max(记录编号) f rom LogsMaintable where 记录编号 like 'rzbh-" & Format(Date.Now,"yyyyMMdd") & "%'"
                    Dim maxID As String
                    Dim newID As String
                    
                    maxID = CMD.E xecuteScalar
                    If maxID Is Nothing Then
                        newID = "rzbh" & "-" & Format(Date.Now,"yyyyMMdd") & "-" & "0001"
                    Else
                        newID = "rzbh" & "-" & Format(Date.Now,"yyyyMMdd") & "-" & CStr(Val(Right(maxID,4)) + 1).PadLeft(4,"0")
                    End If
                    
                    cmd.C ommandText = "s elect * from LogsMaintable where [_identify] is null"
                    
                    Dim dt As DataTable
                    dt = cmd.E xecuteReader(True)
                    Dim dr As DataRow = dt.AddNew()
                    dr("记录编号") = newID
                    dr("记录名称") = e.PostValues("rzbt")
                    If e.PostValues.ContainsKey("rznr")
                        dr("记录内容") = e.PostValues("rznr")
                    End If
                    
                    'messagebox.show(CDate(e.PostValues("sjrq")))
                    If e.PostValues.ContainsKey("sjrq") Then
                        dr("事件日期") = CDate(e.PostValues("sjrq"))
                    End If
                    
                    dr("记录人") = cs
                    dr("记录日期") = Format(Date.Now,"yyyy-MM-dd hh:mm:ss")
                    
                    dt.Save()
                    
                    Dim filenames As new List(of String)
                    If e.Files.ContainsKey("up1") Then
                        For Each key As String In e.Files.Keys
                            For Each fln As String In e.Files(key)
                                e.SaveFile(key,fln, ProjectPath & "Attachments\HRlogsFiles\" & fln)   '存接收到的文件
                                filenames.Add(fln)
                            Next
                        Next
                    End If
                    
                    If filenames.Count > 0 Then
                        For Each f As String In filenames
                            cmd.C ommandText = "i nsert i nto LogsFileDetail (记录编号,文件名,记录人,记录日期) values ('" & newID & "','" & f & "','" & cs & "','" & Format(Date.Now,"yyyy-MM-dd hh:mm:ss") & "')"
                            cmd.ExecuteNonQuery
                        Next
                    End If
                    
                    e.WriteString("OK")
                    
                End If
            End If
            e.WriteString(wb.Build) '生成网页
        End If
[此贴子已经被作者于2018/11/9 11:53:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:72502 积分:363620 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 11:26:00 [只看该作者]

这个代码 e.WriteString(wb.Build) '生成网页

 

写到下面这个位置,不要写到最后(也就是,尽量不要重复执行 e.writeString)

 

                wb.AppendHTML("<script src='./lib/HRlogsMsg.js'></script>") '引入脚本文件
                e.WriteString(wb.Build) '生成网页     
            Else
                If e.PostValues.ContainsKey("rzbt") Then

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1305 积分:10090 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/11/9 11:31:00 [只看该作者]

谢谢有点甜,已调整!

现在还有个疑问:

上传文件进度显示100%后,弹出上传成功提示要等10秒左右,不知为何?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:72502 积分:363620 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 11:54:00 [只看该作者]

 

1、你在你httprequest那里加入msgbox,看执行到最后的OK了没有。

 

2、一般情况,是先把文件上传完毕,才跳转到你httprequest事件的,这个时候已经上传了文件,但你的事件代码没有开始处理(可能你处理过程用了10秒)

 

3、优化一下你httprequest事件的代码,执行sqlcommand都是比较耗时的。

 


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1305 积分:10090 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/11/9 14:58:00 [只看该作者]

通过反复测试,发现文件上传完毕后,会出现一个间隔时间,有时7、8秒,有时十多秒,根据文件大小略有差异(测试的文件大概2~4M),
然后才进入 httprequest 事件( httprequest 事件代码很简单,几乎没有延时的)。
也就是说出现的延迟并不是 httprequest 代码导致的,进入 httprequest 之前的那个延迟不知什么原因呢?
[此贴子已经被作者于2018/11/9 15:01:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:72502 积分:363620 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 15:07:00 [只看该作者]

我测试没问题。步骤是这样的:

 

1、点击上传后,文件开始上传到服务器;

 

2、上传完毕以后,跳转到httprequest,你在第一行加入msgbox调试一下;

 

3、我上传的是50M的文件,跳转100%后,立马就到httprequest的msgbox弹出。


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1305 积分:10090 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/11/9 15:39:00 [只看该作者]

在第一行加入msgbox,传一个5M的文件,传完毕,等了13秒才弹出,我自己的办公电脑当服务器。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:72502 积分:363620 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/9 15:42:00 [只看该作者]

在httprequest事件的第一行加入msgbox(123),然后测试,当提示上传完毕以后,就会跳转到msgbox。


 回到顶部