以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]扩展列文件保存位置问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63544)

--  作者:cqlwsam
--  发布时间:2015/1/23 9:41:00
--  [求助]扩展列文件保存位置问题
数据库中有多文件扩展列。计划采用FTP方式保存。但存在网络不通问题。需加一个判断。如果:网络通畅,则保存在服务器上;如果网络不通,先保存在本地,网络通畅后在上传服务器。请教判断代码如何写!谢谢!
--  作者:Bin
--  发布时间:2015/1/23 9:48:00
--  
呵呵,这个不是简单的一两句代码可以判断写的. 是个复杂的过程.

思路大概是,添加文件时,在添加文件事件利用PINg判断网络是否通http://www.foxtable.com/help/topics/1401.htm

不同则取消,转而存到本地,并且把路径地址文件名和标记存放到另外一列,或者专门起一个表.

可以在计时器中用多线程定时检测网络是否通,通就遍历未上传的文件上传上去,要想不影响操作,不卡顿,就得用多线程  FTP上传看http://www.foxtable.com/help/topics/1410.htm

也可以额外用一个按钮,点击就判断服务器是否通,通就批量上传.

--  作者:cqlwsam
--  发布时间:2015/1/23 10:15:00
--  
 If TryConnectHost("127.0.0.1") Then
                Dim ftp1 As New FtpClient
                If ftp1.DirExists(txt) Then
                    Dim Result As DialogResult
                    Result = MessageBox.Show("系统中存在同名目录,需要保留原来的数据吗?","提醒",MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
                    If Result = DialogResult.yes Then
                        .save()
                        .refresh
                    Else If Result = DialogResult.no Then
                        Dim fls As List(of String)
                        fls = ftp1.GetFileList(txt)
                        For Each fl As String In fls
                            ftp1.DeleteFile(fl)
                        Next
                    Else
                        .current.reject()
                        .Refresh
                        Return
                    End If
                Else  ftp1.MakeDir(txt)
                    .save()
                    .Refresh
                End If
            Else
                MessageBox.Show("网络不通,文件暂时保存在本地,网络联通后再行上传!!","提醒!!",MessageBoxButtons.OK,MessageBoxIcon.Information)
                Dim pth As String = ProjectPath & "Attachments\\" & txt
                If FileSys.DirectoryExists(pth) Then
                    Dim Result As DialogResult
                    Result = MessageBox.Show("系统中存在同名目录,需要保留原来的数据吗?","提醒",MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
                    If Result = DialogResult.yes Then
                        .save()
                        .refresh
                    Else If Result = DialogResult.no Then
                        For Each File As String In FileSys.GetFiles(pth)
                            If file Like "*.*" Then
                                FileSys.DeleteFile(file,3,3)
                            End If
                        Next
                    Else
                        .current.reject()
                        .Refresh
                        Return
                    End If
                Else filesys.CreateDirectory(pth)
                    .save()
                    .Refresh
                End If
            End If


--  作者:cqlwsam
--  发布时间:2015/1/23 10:17:00
--  
ftp下如何将一个目录下的文件移动另一个目录下。好像没得move一类的命令
--  作者:有点甜
--  发布时间:2015/1/23 10:19:00
--  

 参考

 

Rename

用于重命名文件或目录,语法:

Rename(currentName, newName)

currentName:要重命名的文件或目录,含路径。
newName:新的名称,含路径。

如果重命名成功,则返回True,否则返回False.


--  作者:Bin
--  发布时间:2015/1/23 10:19:00
--  
用rename 看看行不行

Rename

用于重命名文件或目录,语法:

Rename(currentName, newName)

currentName:要重命名的文件或目录,含路径。
newName:新的名称,含路径。

如果重命名成功,则返回True,否则返回False.

示例

重命名文件:

Dim ftp1 As New FtpClient
ftp1.Host=
"196.128.143.28"
ftp1.Account = 
"foxuser"
ftp1.Password = 
"138238110"
If 
ftp1.Rename("\\Photo\\Desert.jpg","\\新目录\\Desert1.jpg") Then
    
Messagebox.show("重命名文件成功!")
End If


--  作者:Bin
--  发布时间:2015/1/23 10:20:00
--  
可以的,帮助有说

例如将文件"jz.png"从photo目录移到到newkey目录:

Dim ftp1 As New FtpClient
ftp1
.Host="196.128.143.28"
ftp1
.Account = "foxuser"
ftp1
.Password = "138238110"
If 
ftp1.Rename("\\photo\\jz.png","\\newkey\\jz.png") Then
    
Messagebox.show("移动文件成功!")
End If

MakeDir