以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]对上传成功的文件进行重命名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65871)

--  作者:liujywwy
--  发布时间:2015/3/24 17:34:00
--  [求助]对上传成功的文件进行重命名
对上传成功的文件进行重命名,发现并没有重命名,请看红色的代码,哪里有问题?
Dim fls() As String = dlg.FileNames
Dim Values1 As New List(Of String)
Dim Values2 As New List(Of String)
Dim ftp As new FTPClient
ftp.Host = "192.168.1.35"
ftp.Account = "tester"
ftp.Password = "tester"
e.Form.text = "所选文件上传中...."
Dim ss As String
For Each f1 As String In dlg.FileNames
    If (ftp.Upload(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1))) = True Then  \'判断是否上传成功
        If (FileSys.GetName(f1).Contains(".")) Then
            Dim dian As Integer = FileSys.GetName(f1).LastIndexOf(".")
            ftp.Rename(FileSys.GetName(f1),FileSys.GetName(f1).SubString(0,dian) & "_" & Tables("临时版本跟踪表").Current("临时版本编号") & FileSys.GetName(f1).SubString(dian,FileSys.GetName(f1).Length - dian))
        End If
        values1.add(f1) \'如果上传成功,那么就把这个文件添加到集合values1里面
        Dim xg As Integer = f1.LastIndexOf("\\") \'找出f1文件的最后一个\\
        Dim fname As String = f1.SubString(xg + 1) \'取出f1的文件名
        ss = ss & vbcrlf & fname \'分行显示f1的文件名
    End If
Next
Functions.Execute("listview")
e.Form.text = "版本目录文件list"
MessageBox.Show(ss,"恭喜你上传成功" & values1.count  & "个文件!,分别为:")

--  作者:有点酸
--  发布时间:2015/3/24 21:52:00
--  
ftp的Rename函数,两个参数都必须包括路径的,所以你的ftp.rename第一个参数就不对,你只是取文件名而已。
你可以在Rename之前,分别用MessageBox.show显示一下原文件和目标文件这两个参数,看看是否有问题。

--  作者:liujywwy
--  发布时间:2015/3/25 10:38:00
--  
For Each f1 As String In dlg.FileNames
    If (ftp.Upload(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1))) = True Then  \'判断是否上传成功
        msgbox(f1)-----源文件正确
        msgbox(Vars("zhygwjj") & "\\" & Filesys.getName(f1)) -----目标文件正确
        If (FileSys.GetName(f1).Contains(".")) Then
            Dim dian As Integer = FileSys.GetName(f1).LastIndexOf(".")
            ftp.Rename(f1,Vars("zhygwjj") & "\\" & Filesys.getName(f1).SubString(0,dian) & "_" & Tables("临时版本跟踪表").Current("临时版本编号") & Vars("zhygwjj") & "\\" & Filesys.getName(f1).SubString(dian,FileSys.GetName(f1).Length - dian))-----没有重命名,哪里不对呢?
        End If
        values1.add(f1) \'如果上传成功,那么就把这个文件添加到集合values1里面
        Dim xg As Integer = f1.LastIndexOf("\\") \'找出f1文件的最后一个\\
        Dim fname As String = f1.SubString(xg + 1) \'取出f1的文件名
        ss = ss & vbcrlf & fname \'分行显示f1的文件名
    End If
Next
Functions.Execute("listview")
e.Form.text = "版本目录文件list"
MessageBox.Show(ss,"恭喜你上传成功" & values1.count  & "个文件!,分别为:")
或者有什么更好的办法处理,我是把每上传成功一个文件就然后把它进行了重命名。


--  作者:有点甜
--  发布时间:2015/3/25 10:43:00
--  

1、重命名是否多余?你upLoad的时候,本来就是能够控制名字的啊;

 

2、无法重命名,就是你的路径没写对,第一第二个都要是ftp上的路径。

[此贴子已经被作者于2015/3/25 10:43:39编辑过]

--  作者:liujywwy
--  发布时间:2015/3/25 11:17:00
--  

临时版本编号为03024_2015,也就是tables(“临时版本跟踪表”).current("临时版本编号")的值。

比如上传上去的文件有下面6个。扩展名有*.bin,*.map,*.txt,*.doc,如红色的文件名。
BD_2226H_2.1.1A_25279.bin
BD_2226H_2.1.1A_25279_vxWorks.map
BD_2226H_2.1.1A_25279_vxWorks
show version.txt
default-config
03024_2015(S2210I_深圳博诚)临时版本测试报告.doc

希望做到有扩展名的也就说文件名包括.的,重命名后格式为.之前加上_临时版本编号。如下
BD_2226H_2.1.1A_25279_03024_2015.bin
BD_2226H_2.1.1A_25279_vxWorks_03024_2015.map
show version_03024_2015.txt


不带扩展名的分2种:

一种为文件名不包括vxworks的,比如default-config,希望重命名格式为:文件名后面直接加上_临时版本编号。如下
default-config_03024_2015

另外一种为文件名有vxworks,比如BD_2226H_2.1.1A_25279_vxWorks,希望在_vxworks之前加上_临时版本编号。如下:
BD_2226H_2.1.1A_25279_03024_2015_vxWorks

想按照有点甜老师的建议,直接在upload后就进行重命名,可是不知道针对上面各种情况改怎么写代码。

--  作者:有点甜
--  发布时间:2015/3/25 11:38:00
--  

 参考下面的代码,自己改一下

 

Dim bh As String = "_03024_2015"
Dim dlg As new OpenFileDialog
If dlg.ShowDialog = DialogResult.OK Then
    For Each f As String In dlg.FileNames
        Dim f1 As String = FileSys.GetName(f)
        Dim fname As String
        If f1.EndsWith("_vxWorks") Then
            Dim idx As Integer = f1.LastIndexOf("_vxWorks")
            fname = f1.SubString(0, idx-1) & bh & "_vxWorks"
        Else
            Dim idx As Integer = f1.LastIndexOf(".")
            If idx > -1 Then
                fname = f1.SubString(0, idx) & bh & f1.SubString(idx)
            Else
                fname = f1 & bh
            End If
        End If
        msgbox(fname)
    Next
End If


--  作者:liujywwy
--  发布时间:2015/3/25 14:20:00
--  
Dim bh As String = Tables("临时版本跟踪表").Current("临时版本编号")
Dim dlg As new OpenFileDialog
dlg.MultiSelect = True
Dim s As String
Dim fnames,fname1 As String
If dlg.ShowDialog = DialogResult.OK Then
    s = "你选择了" & dlg.FileNames.Length & "个文件, 分别是:"
    For Each f As String In dlg.FileNames
        s = s & vbcrlf & f
        fnames = fnames & vbcrlf & fname1
        Dim f1 As String = FileSys.GetName(f)
        If f1.EndsWith("_vxWorks") Then
            Dim idx As Integer = f1.LastIndexOf("_vxWorks")
            fname1 = f1.SubString(0, idx-1) & "_" & bh & "_vxWorks"
        Else
            Dim idx As Integer = f1.LastIndexOf(".")
            If idx > -1 Then
                fname1 = f1.SubString(0, idx) & "_" & bh & f1.SubString(idx)
            Else
                fname1 = f1 & "_" & bh
            End If
        End If
    Next
    MessageBox.Show(s,"你选择的文件数量及其路径如下:")
    msgbox(fnames)
End If

Dim fls() As String = dlg.FileNames
Dim Values1 As New List(Of String)
Dim Values2 As New List(Of String)
Dim ftp As new FTPClient
ftp.Host = "192.168.1.35"
ftp.Account = "tester"
ftp.Password = "tester"
e.Form.text = "所选文件上传中...."
Dim ss As String
For Each f2 As String In dlg.FileNames
    If (ftp.Upload(f2,Vars("zhygwjj") & "\\" & fname1))= True Then  \'判断是否上传成功-----没上传成功
        msgbox(f2)
        msgbox(Vars("zhygwjj") & "\\" & fname1)        
        values1.add(f2) \'如果上传成功,那么就把这个文件添加到集合values1里面    
        ss = ss & vbcrlf & fname1 \'分行显示f1的文件名
    End If
Next
Functions.Execute("listview")
e.Form.text = "版本目录文件list"
MessageBox.Show(ss,"恭喜你上传成功" & values1.count  & "个文件!,分别为:")
ftp.Close


--  作者:有点甜
--  发布时间:2015/3/25 14:31:00
--  

 无语......类似下面这样写代码啊

 


Dim bh As String = Tables("临时版本跟踪表").Current("临时版本编号")
Dim dlg As new OpenFileDialog
dlg.MultiSelect = True

If dlg.ShowDialog = DialogResult.OK Then
    Dim ftp As new FTPClient
    ftp.Host = "192.168.1.35"
    ftp.Account = "tester"
    ftp.Password = "tester"
    \'e.Form.text = "所选文件上传中...."
   
    Dim ss As String
    Dim fname1 As String
    For Each f As String In dlg.FileNames
        Dim f1 As String = FileSys.GetName(f)
        If f1.EndsWith("_vxWorks") Then
            Dim idx As Integer = f1.LastIndexOf("_vxWorks")
            fname1 = f1.SubString(0, idx-1) & "_" & bh & "_vxWorks"
        Else
            Dim idx As Integer = f1.LastIndexOf(".")
            If idx > -1 Then
                fname1 = f1.SubString(0, idx) & "_" & bh & f1.SubString(idx)
            Else
                fname1 = f1 & "_" & bh
            End If
        End If
        If (ftp.Upload(f,Vars("zhygwjj") & "\\" & fname1))= True Then  \'判断是否上传成功-----没上传成功
           
            ss = ss & vbcrlf & fname1 \'分行显示f1的文件名
        End If

    Next
    Functions.Execute("listview")
    \'e.Form.text = "版本目录文件list"
    ftp.Close
End If