Foxtable(狐表)用户栏目专家坐堂 → [求助]对上传成功的文件进行重命名


  共有3779人关注过本帖树形打印复制链接

主题:[求助]对上传成功的文件进行重命名

帅哥哟,离线,有人找我吗?
liujywwy
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
[求助]对上传成功的文件进行重命名  发帖心情 Post By: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  & "个文件!,分别为:")

 回到顶部
帅哥哟,离线,有人找我吗?
有点酸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2015/3/24 21:52:00 [只看该作者]

ftp的Rename函数,两个参数都必须包括路径的,所以你的ftp.rename第一个参数就不对,你只是取文件名而已。
你可以在Rename之前,分别用MessageBox.show显示一下原文件和目标文件这两个参数,看看是否有问题。

 回到顶部
帅哥哟,离线,有人找我吗?
liujywwy
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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  & "个文件!,分别为:")
或者有什么更好的办法处理,我是把每上传成功一个文件就然后把它进行了重命名。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/25 10:43:00 [只看该作者]

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

 

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
liujywwy
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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后就进行重命名,可是不知道针对上面各种情况改怎么写代码。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:633 积分:4034 威望:0 精华:0 注册:2014/6/23 10:27:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部