以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请教:上传文件进度显示100%后,为何弹出上传成功提示要等10秒左右,? (http://foxtable.com/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。 |