以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  付款凭证的设计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=196068)

--  作者:hfapplehao
--  发布时间:2025/3/26 21:02:00
--  付款凭证的设计问题
老师您好
我想用foxtable 这个软件开发一个程序,先把单元格扩展类型调整成文件,然后在单元格里上传文件,文件上传到服务器后,然后其他同事可以同步看到。
ftp服务器有一个坏处,所有的文件都上传到一个根目录里面,如果有重复的就容易覆盖。
为了改变这种问题,我想 foxtable 每个单元格上传的文件要求单独成立一个文件夹,然后把文件上传进去
,这种情况下怎么设计这个代码啊?

求老师指点一二。
 

--  作者:有点蓝
--  发布时间:2025/3/27 8:57:00
--  
参考:http://www.foxtable.com/webhelp/topics/1410.htm

1、窗口设计一个上传按钮
2、上传前先根据当前行的编号(或者其它可以区分每行数据的列)使用DirExists判断ftp里是否有这个编号为名称的目录,如果没有就使用MakeDir添加
3、使用OpenFileDialog获取文件
4、把文件使用Upload上传到前面指定的目录里
5、把ftp路径添加到单元格:http://www.foxtable.com/webhelp/topics/2717.htm

--  作者:hfapplehao
--  发布时间:2025/3/31 9:51:00
--  

以上4步均已经实现,但是上传的文件,打开却出现问题了
上传代码如下:

Dim ftp1 As New FtpClient
Dim fl As String
Dim receiverName As String

Try
    ftp1.Host = "192.168.1.x"
    ftp1.Account = "xxxx" ,这里隐藏了
    ftp1.Password = "xxx"
    ftp1.RootDir = "/PSD"
    
    \' 获取并检查收款单位
    receiverName = Trim(CurrentTable.Current("收款单位"))
    
    \' 检查收款单位是否为空
    If String.IsNullOrEmpty(receiverName) Then
        MessageBox.Show("警告:收款单位为空!")
        
    End If
    
    \' 构建目录路径,移除可能的非法字符
    receiverName = receiverName.Replace("\\", "_") _
    .Replace("/", "_") _
    .Replace(":", "_") _
    .Replace("*", "_") _
    .Replace("?", "_") _
    .Replace("""", "_") _
    .Replace("<", "_") _
    .Replace(">", "_") _
    .Replace("|", "_") _
    .Trim()
    
    \' 构建目录路径
    fl = receiverName & "/" & CurrentTable.Current("流水号")
    
    
    Try
        ftp1.ChangeDir("/")
        
        \' 先尝试创建收款单位目录(如果不存在)
        If Not ftp1.dirExists(receiverName) Then
            If Not ftp1.MakeDir(receiverName) Then
                MessageBox.Show("创建收款单位目录失败!") 
            End If
        End If
        
        \' 切换到收款单位目录
        ftp1.ChangeDir(receiverName)
        
        \' 创建流水号子目录
        If Not ftp1.dirExists(CurrentTable.Current("流水号")) Then
            If ftp1.MakeDir(CurrentTable.Current("流水号")) Then
                MessageBox.Show("创建目录成功: " & fl)
            Else
                MessageBox.Show("创建流水号目录失败!")
            End If
        Else
            MessageBox.Show("目录已存在: " & fl)
        End If
        
    Catch ex As Exception
        MessageBox.Show("创建目录失败: " & ex.Message)
    End Try
    
Catch ex As Exception
    MessageBox.Show("FTP连接失败: " & ex.Message)
End Try



\'第二步获取上传文件的文件名 并上传到指定的目录里面
\'Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog 
\'If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
\'    ftp1.upload(dlg.FileName, fl, True)
\'End If
\' ... 前面的 FTP 创建目录代码保持不变 ...

\'第二步获取上传文件的文件名并上传到指定的目录里面
Try
    Dim dlg As New OpenFileDialog 
    If dlg.ShowDialog = DialogResult.OK Then
        \' 获取文件名 - 使用简单的字符串处理方法
        Dim fileName As String = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\\") + 1)
        
        Try
            \' 确保当前目录是正确的
            ftp1.ChangeDir("/PSD")
            ftp1.ChangeDir(receiverName)
            ftp1.ChangeDir(CurrentTable.Current("流水号"))
            
            \' 上传文件
            If ftp1.Upload(dlg.FileName, fileName, True) Then
                MessageBox.Show("文件上传成功:" & fileName)
            Else
                MessageBox.Show("文件上传失败!")
            End If
            
        Catch ex As Exception
            MessageBox.Show("文件上传过程中出错:" & ex.Message)
        End Try
    End If
\'第三步,把ftp路径添加到单元格
Try
    Dim lst As New List(Of String)
    \' 获取当前目录下的所有文件
    Dim fileList = ftp1.GetFileList().ToList() \' 转换为List
    
    \' 正确声明循环变量 file
    For Each file As Object In fileList
        lst.Add("\\PSD\\"& fl & "\\" & file.ToString())
    Next
    
    CurrentTable.Current.DataRow.Lines("付款支持性文件") = lst 
    Catch ex As Exception
    MessageBox.Show("获取文件列表失败:" & ex.Message)
End Try
    
Catch ex As Exception
    MessageBox.Show("文件选择或上传过程出错:" & ex.Message)
End Try

上传之后,用列自带的窗口打不开了
提示如下:
图片点击可在新窗口打开查看此主题相关图片如下:打开失败.png
图片点击可在新窗口打开查看

老师帮忙看看哪里出现问题了啊

--  作者:有点蓝
--  发布时间:2025/3/31 9:56:00
--  
貌似路径不对,核对一下服务器路径是否正确


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看