以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 在上传文件到二进制列时,如何显示文件上传进度条呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160020) |
-- 作者:cnsjroom -- 发布时间:2021/1/18 0:47:00 -- 在上传文件到二进制列时,如何显示文件上传进度条呢? 在上传文件到二进制列时,如何显示文件上传进度条呢? 进度条窗体中 有一个进度条组件 和按钮 按钮代码:可以实现根据文件获取文件大小并刷新窗体中的进度条组件【怎么实现进度条到达完毕后,关闭进度条窗体呢?红色部分代码怎么完善?】 Dim ifo As new FileInfo("D:\\360极速浏览器下载\\boneAnimation_v2.2.9_x64.exe") Dim p As WinForm.ProgressBar p = e.Form.Controls("ProgressBar1") p.Maximum = ifo.Length\'设置最大值 p.Minimum = 0 \'设置最小值 p.Value = 0 \'设置当前值 For i As Integer = 0 To ifo.Length - 1 If i Mod 100 = 0 Then p.Value = i \'当前值为已经完成的行数 End If Forms("进度条").Close() Next 下面代码为列子中的二进制文件上传代码 怎么采用上面的代码来对应在上传文件的时候 弹出进度条窗体 并显示进度条呢?上传完毕后自动关闭进度条窗体。(红色部分……代码该怎么写呢?) 上传文件按钮代码: IDim dlg As New OpenFileDialog dlg.Filter = "图形文件|*.bmp;*.jpg;*.gif;*.png" If dlg.ShowDialog =DialogResult.OK Then Dim fl As String = dlg.FileName Dim r As Row = Tables("员工.附件").AddNew() r("文件名") = FileSys.GetName(fl) \'写入文件名 r.Save \'必须先保存 r.DataRow.SQLInsertFile("附件",fl) \'插入文件 …… Forms("进度条").show() r.DataRow.SQLSetValue("CRC值", CRCCheckFile(fl)) \'保存crc检验值 End If 下面代码为列子中的二进制文件打开代码 怎么采用上面的代码来对应在下载文件的时候 弹出进度条窗体 并显示进度条呢?下载完毕后自动关闭进度条窗体。(红色部分……代码该怎么写呢?) 打开文件按钮代码: If Tables("员工.附件").Current Is Nothing Then Return End If Dim dr As DataRow = Tables("员工.附件").Current.DataRow Dim fl As String = ProjectPath & dr("文件名") If FileSys.FileExists(fl) AndAlso CRCCheckFile(fl) = dr.SQLGetValue("CRC值") Then \'如果本地存在同名文件且CRC校验值相同 \'则直接使用本地文件 Else \'否则从数据库提取文件 …… Forms("进度条").show() If dr.SQLLoadFile("附件",fl) = False Then \'如果提取文件失败 Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Return End If End If Dim Proc As New Process \'打开文件 Proc.File = fl Proc.Start() [此贴子已经被作者于2021/1/18 0:58:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/1/18 8:41:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=152101 |
-- 作者:cnsjroom -- 发布时间:2021/1/18 10:18:00 -- 回复:(有点蓝)参考:http://www.foxtable.com/bbs/... 参照列子 代码如下: Dim dlg As New OpenFileDialog dlg.Filter = "|*.*" If dlg.ShowDialog =DialogResult.OK Then Dim fl As String = dlg.FileName Dim ifo As new FileInfo(fl) Dim sj As Double Dim Multi As String = (ifo.Length) Dim Values() As String Values = Multi.split(".") sj=Values(0) \'If sj > 1073741824 Then \'文件大于1gb If sj > 524288000 Then \'文件大于500mb MessageBox.Show("文件"& Format(Values(0)/1024/1024,"0.00") &"MB" &"过大,只能上传小于500MB的文件!","温馨提示") Else MessageBox.Show("文件"& Format(Values(0)/1024/1024,"0.00") &"MB" &"小于500MB,支持上传!","温馨提示") Dim r As Row = Tables("员工.附件").AddNew() r("文件名") = FileSys.GetName(fl) \'写入文件名 r.Save \'必须先保存 r.DataRow.SQLInsertFile("附件",fl) \'插入文件 WaitShow() \'打开 \'耗时操作 For i As Integer = 0 To sj Output.Show(i) Next WaitClose() \'关闭 r.DataRow.SQLSetValue("CRC值", CRCCheckFile(fl)) \'保存crc检验值 End If End If 红色部分没有起到作用 如果将SJ换成列子中的10000 且直接命令窗口红色部分可以运行 麻烦老师看看 红色部分怎么没有根据文件上传进度进行对应的进度条图片显示呢? |
-- 作者:有点蓝 -- 发布时间:2021/1/18 10:22:00 -- WaitShow() \'打开 \'耗时操作 r.DataRow.SQLInsertFile("附件",fl) \'插入文件 WaitClose() \'关闭
|
-- 作者:cnsjroom -- 发布时间:2021/1/18 10:32:00 -- 回复:(有点蓝) WaitSh... OK 谢谢老师 是不是同理 其他如果上传或者操作需要等待很久的时候 我就对应的吧需要长时间等待运行的代码放在这个里面 WaitShow() \'打开 \'耗时操作 需要长时间耗时操作的代码 WaitClose() \'关闭 有没有办法实现百分之几的进度呢?这样会更加直观一些
|
-- 作者:有点蓝 -- 发布时间:2021/1/18 10:37:00 -- 没有办法,SQLInsertFile是一个原子操作,基于不同的文件大小、网络状态、内存使用状态,数据库状态,都有可能产生不同的处理时间。只能是显示一个gif图片表示正在处理中, |
-- 作者:cnsjroom -- 发布时间:2021/1/18 11:04:00 -- 回复:(有点蓝)没有办法,SQLInsertFile是一个原子操... 好的 谢谢老师耐心的指导和解答 |