vbsftp上传
A. VB如何连接sftp下载文件
因为安全原因,需要SFTP协议(sftp是SecureFile Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部份,是一种传输档案至Blogger 服务器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File TransferProtocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP)
准备阶段
需要引用第三方类库Tamir.SharpSSH.dll。链接地址(http://www.tamirgal.com/blog/page/SharpSSH.aspx)
我下载的是(Downloadbinaries: SharpSSH-1.1.1.13.bin.zip)DotNetSSH 文件
把Tamir.SharpSSH.dll加载到项目中。
实现阶段
增加一个类SFTPHelper
1Imports Tamir.SharpSsh.jsch
2
3PublicClass SFTPHelper
4 Private m_session As Session
5 Private m_channel As Channel
6 Private m_sftp As ChannelSftp
7
8 PublicSubNew(ByVal host AsString, ByVal user AsString, ByVal pwd AsString)
9 Dim arr() AsString = host.Split(":")
10 Dim ip AsString = arr(0)
11 Dim port AsInteger = 22
12 If (arr.Length > 1) Then
13 port = Int32.Parse(arr(1))
14 EndIf
15
16 Dim jsch As JSch = New JSch()
17 m_session =jsch.getSession(user, ip, port)
18 Dim ui As MyUserInfo = New MyUserInfo()
19 ui.setPassword(pwd)
20 m_session.setUserInfo(ui)
21 End Sub
22
23 'SFTP获取文件
24 PublicFunction GetInfo(ByVal remotePath AsString, ByVal localPath AsString) AsBoolean
25 Try
26 Dim src As Tamir.SharpSsh.java.String = New Tamir.SharpSsh.java.String(remotePath)
27 Dim dst As Tamir.SharpSsh.java.String = New Tamir.SharpSsh.java.String(localPath)
28 m_sftp.get(src, dst)
29 ReturnTrue
30 Catch
31 ReturnFalse
32 EndTry
33 End Function
34 'SFTP连接状态
35 PublicProperty Connected AsBoolean
36 Get
37 Return m_session.isConnected()
38 EndGet
39 Set(ByVal value AsBoolean)
40
41 EndSet
42 End Property
43
44 '连接SFTP
45 PublicFunction Connect() AsBoolean
46 Dim flag AsBoolean = False
47 Try
48 If (Not Connected()) Then
49 m_session.connect()
50 m_channel =m_session.openChannel("sftp")
51 m_channel.connect()
52 m_sftp = m_channel
53 flag = True
54 EndIf
55 Catch
56 flag = False
57 EndTry
58 Return flag
59 End Function
60
61 '断开SFTP
62 PublicSub Disconnect()
63
64 If (Connected()) Then
65 m_channel.disconnect()
66 m_session.disconnect()
67 EndIf
68 End Sub
69
70 '登录验证信息
71 PublicClass MyUserInfo
72 Implements UserInfo
73
74 Dim passwd AsString
75
76 PublicSub setPassword(ByVal ppasswd AsString)
77 passwd = ppasswd
78 End Sub
79 PublicFunction getPassphrase() AsStringImplementsTamir.SharpSsh.jsch.UserInfo.getPassphrase
80 ReturnNothing
81 End Function
82 PublicFunction getPassword() AsStringImplements Tamir.SharpSsh.jsch.UserInfo.getPassword
83 Return passwd
84 End Function
85
86 PublicFunction promptPassphrase(ByVal message AsString) AsBooleanImplements Tamir.SharpSsh.jsch.UserInfo.promptPassphrase
87 ReturnTrue
88 End Function
89 PublicFunction promptPassword(ByVal message AsString) AsBooleanImplementsTamir.SharpSsh.jsch.UserInfo.promptPassword
90 ReturnTrue
91 End Function
92 PublicFunction promptYesNo(ByVal message AsString) AsBooleanImplements Tamir.SharpSsh.jsch.UserInfo.promptYesNo
93 ReturnTrue
94 End Function
95 PublicSub showMessage(ByVal message AsString) Implements Tamir.SharpSsh.jsch.UserInfo.showMessage
96
97 End Sub
98 End Class
99
100End Class
还有一个最简单的办法
Shell "explorer 下载地址"
B. sftp 上传下载文件的时候 sh.GetFileList("/PF/Upload/", "test.txt"); 提示未将对象引用到实例。
我也遇到过 你应该检查下你的值是不是为null,跟踪调试下看看呢,虽然我对这个不太懂 给一点我的想法吧
C. windows 下如何使用sftp自动登录上传文件
1首先打开linux客户端工具,新建一个连接
2IP地址填写我们本机的IP地址
3创建完毕,打开刚才创建的连接进行连接
4连接打开,在命令行输入 sfpt 服务器IP地址
5进入用户名填写处,填写我们需要传输文件的服务器用户名
6接着填写登录密码
7显示如下标志表明,已经登录成功,使用put 文件路径即可实现文件传输
D. 为什么用SFTP上传这个更改了的文件老是失败呀,上传图片其它的都行
错误信息里提示了:Permission denied,没有权限呀,估计是后台限制了你上传某类文件了
E. SFTP 怎么往服务器上上传整个文件夹
使用SecureSRT中的SFTP传递文件夹时,有个小细节值得注意一下:
1)在文件夹名dirname后加上'/',传输后,目标位置没有新建文件夹dirname,只有dirname文件夹下的各个文件。
如:
sftp> get -r smsrc/
2)在文件夹名dirname后不加'/',传输后,目标位置新建文件夹dirname,所有文件位置新建文件夹dirname下。
如:
sftp> get -r smsrc
F. 如何设置通过sftp将文件上传到linux指定 工具指定根目录路径
如果是window下上传到linux,可以安装个flashfxp软件。输入用户密码。就可以象ftp一样上传文件到linux里。。
如果是linux传linux。。。
直接使用sftp ip 输入用户密码,然后用cd ls put get等命令就可以把文件传到相应目录
具体命令参数可以输入sftp --help 就可以参看了