以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]上传FTP文件时如何自动更改名称  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173232)

--  作者:流水
--  发布时间:2021/11/19 17:34:00
--  [求助]上传FTP文件时如何自动更改名称
求助:上传FTP文件时如何自动更改名称
--  作者:有点蓝
--  发布时间:2021/11/19 17:39:00
--  
自己使用代码上传,可以指定任何名称:http://www.foxtable.com/webhelp/topics/1410.htm
--  作者:流水
--  发布时间:2021/11/19 20:40:00
--  
好的,谢谢
--  作者:流水
--  发布时间:2021/11/25 9:14:00
--  
蓝老师,我想在上传文件前自动改名字,但只写出了上传后改名字,不知道怎么写上传前改名字,求指导;
代码是写在了表事件DataColChanging里
    Case "附件"
        If e.NewValue IsNot Nothing Then
            Dim tx As String = e.NewValue
            Dim tx1 As String \'赋值斜杠前的字符
            Dim tx2 As String \'赋值文件后缀名
            Dim xm As String \'赋值文件新名称
            Dim rq As Date \'赋值单据日期
            Dim ftp As new FTPClient
            ftp = e.DataCol.FTPClient
            If ftp.FileExists(e.NewValue) = True Then \'如果文件已存在(已上传)
                Dim a As DataRow = DataTables("物流发货记录").Find("_identify = " & e.DataRow("sys_物流内码") & "") ‘查找客户简称
                If a IsNot Nothing Then
                    If Tables("物流发货记录_Table3").Rows.Count > 0 Then
                        rq = Tables("物流发货记录_Table3").Rows(0)("单据日期") ‘查找单据日期
                    End If
                    tx1 = tx.SubString(0,tx.LastIndexOf("/") + 1)
                    tx2 = tx.SubString(tx.LastIndexOf("."))
                    If e.DataRow.IsNull("单据号码") = False \'如果不为空
                        xm = tx1 & a("单位简称") & "_" & e.DataRow("单据号码") & "_" & rq & tx2 ‘单据号码命名
                    Else
                        xm = tx1 & a("单位简称") & "_" & e.DataRow("发票号码") & tx2 ‘发票号码命名
                    End If
                    \'MessageBox.Show("改名:" & xm)
                    If  ftp.Rename(e.NewValue,xm) = True Then \'如果改名成功
                        e.NewValue = xm
                    Else
                        MessageBox.Show(e.DataRow("单据号码") & e.DataRow("发票号码") & " 变更附件名称失败!")
                    End If
                Else
                    MessageBox.Show("未找到公司简称!")
                End If
            End If
        Else
            \'删除附件
            Dim ftp As new FTPClient
            ftp = e.DataCol.FTPClient
            If ftp.FileExists(e.DataRow(e.DataCol.Name)) = True Then \'如果文件存在
                If ftp.DeleteFile(e.DataRow(e.DataCol.Name)) = False \'删除文件
                    MessageBox.Show(e.DataTable.Name & " 表 " & e.DataRow("单据号码") & e.DataRow("发票号码") & "附件文件删除失败!")
                End If
            End If
        End If

--  作者:有点蓝
--  发布时间:2021/11/25 9:54:00
--  
不能使用文件管理器自己的上传按钮,要自己写代码上传:

Dim ftp1 As New FtpClient
ftp1
.Host="196.128.143.28"
ftp1
.Account = "foxuser"
ftp1
.Password = "138238110"
If 
ftp1.Upload("c:\\data\\Desert.jpg","\\update\\新的文件名称.jpg") = True Then
    
Messagebox.show("上传完成!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    
Messagebox.show("上传失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If

--  作者:流水
--  发布时间:2021/11/25 17:17:00
--  
哦,就是要自己做一个上传的功能,不能用狐表自带的,明白了,谢谢;
--  作者:流水
--  发布时间:2022/1/19 16:51:00
--  
这个代码应该写在哪个事件里,百思未能解
--  作者:有点蓝
--  发布时间:2022/1/19 16:54:00
--  
设计窗口,添加一个按钮