If Tables("本地选项").Current("监控模式") = True Then '文件增量变动监控
PS_Files.clear
With FileWatcher
.Path = Tables("本地选项").Current("监控路径")
.Delay = Tables("本地选项").Current("监控间隔")
.Enabled = True
End With
End If
Dim Proc As New Process
Proc.File = Tables("本地选项").Current("拍摄程序")
Proc.Start()
Proc.WaitForExit() '等带拍照程序退出.
Dim dtName As String = Vars("cuTable") '当前表
Dim ftpDir As String = Vars("_FTP_DIR")
ftpDir = ftpDir.Replace("/","\")
Dim flm As WinForm.FileManager = e.Form.Controls("FileManager1")
Dim ufl As String
If Tables("本地选项").Current("监控模式") = True Then '文件增量变动监控
FileWatcher.Enabled = False
Dim Result As DialogResult
Result = MessageBox.Show("扫描已完成,是否确定上传?","附件拍摄",MessageBoxButtons.YesNo,MessageBoxIcon.Information)
If Result = DialogResult.No Then
For Each fl As String In PS_Files
If FileSys.FileExists(fl) Then
FileSys.DeleteFile(fl,2,2)
End If
Next
PS_Files.clear
Return
Else
For Each fl As String In PS_Files
If FileSys.FileExists(fl) Then
Dim ex As String = fl.SubString(fl.LastIndexOf(".") + 1) '获取文件后缀名
ufl = ftpDir & Format(Date.Now,"yyyyMMdd") & "_" & Rand.NextString(4) & "." & ex
If flm.FTPclient.FileExists(ufl) Then '文件存在
flm.FTPclient.DeleteFile(ufl) '删除文件
End If
If flm.FTPclient.Upload(fl,ufl) = True Then '上传成功
flm.AddFile(ufl)
FileSys.DeleteFile(fl,2,2)
Else
MessageBox.Show(ufl & "文件上传失败!")
End If
End If
Next
PS_Files.clear
End If
Else
For Each fl As String In FileSys.GetFiles(Tables("本地选项").Current("监控路径"))
If FileSys.FileExists(fl) Then
Dim ex As String = fl.SubString(fl.LastIndexOf(".") + 1) '获取文件后缀名
ufl = ftpDir & Format(Date.Now,"yyyyMMdd") & "_" & Rand.NextString(4) & "." & ex
If flm.FTPclient.FileExists(ufl) Then '文件存在
flm.FTPclient.DeleteFile(ufl) '删除文件
End If
If flm.FTPclient.Upload(fl,ufl) = True Then '上传成功
flm.AddFile(ufl)
FileSys.DeleteFile(fl,2,2)
Else
MessageBox.Show(ufl & "文件上传失败!")
End If
End If
Next
End If
Tables(dtName).save()
我把“附件管理”窗口做成了一个通用窗口,在任何表中,只要需要附件上传、浏览、删除等操作的,都可以直接调用该窗口,方便得很。
最大的好处是如果是网络版软件,不同用户使用不同的扫描硬件(打印机、高拍仪、扫描仪),可以做到互不干扰。