以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127246)

--  作者:bahamute
--  发布时间:2018/11/9 10:56:00
--  请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,?
 如下代码,上传文件进度显示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编辑过]

--  作者:有点甜
--  发布时间: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
--  发布时间:2018/11/9 11:31:00
--  
谢谢有点甜,已调整!

现在还有个疑问:

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


--  作者:有点甜
--  发布时间:2018/11/9 11:54:00
--  

 

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

 

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

 

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

 


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

--  作者:有点甜
--  发布时间:2018/11/9 15:07:00
--  

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

 

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

 

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

 

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


--  作者:bahamute
--  发布时间:2018/11/9 15:39:00
--  
在第一行加入msgbox,传一个5M的文件,传完毕,等了13秒才弹出,我自己的办公电脑当服务器。
--  作者:有点甜
--  发布时间:2018/11/9 15:42:00
--  

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