M语言上传下载FTP服务器文件资源
ClassMethod FtpFile() As %String
{
/*** 下载ftp资源文件 /
//ftp服务器ip地址
set ip=“10.10.0.012”
//ftp服务器文件目录
s WSDate=
z
d
(
+
zd(+
zd(+h,8)
s DouPath=ip_"/"_WSDate
//ftp服务器账号密码
s username=“ftpuser”
s password=“ftppasswd”
//ftp端口号
s port=21
//ftp文件名
s file=“Test.pdf”
//ftp文件全名
s filename="/“WSDate”/"_file
//创建ftp连接对象
s Fromftp=##class(%Net.FtpSession).%New()
//连接超时时间设置成2s
s Fromftp.Timeout=“2”
//数据传输编码
s Fromftp.CommandTranslateTable=“GB18030”
//连接ftp服务器,连接失败返回0
if 'Fromftp.Connect(ip,username,password,port){
//连接失败的消息
s ErrMessage=Fromftp.ReturnMessage
q "-1^不能连接到源系统ftp,原因: "_ErrMessage
}
s stream=##class(%GlobalCharacterStream).%New()
//设置ftp数据传输模式为Binary二进制流模式,还有ASCII模式
if 'Fromftp.Binary(){
s ErrMessage=Fromftp.ReturnMessage
//切换模式失败关闭连接
d Fromftp.Logout()
q "-1^Binary,原因: "_ErrMessage
}
//读取文件流
if 'Fromftp.Retrieve(filename,.stream){
s ErrMessage=Fromftp.ReturnMessage
//读取文件流失败关闭连接
d Fromftp.Logout()
q “-1^不能在路径"DouPath"下载下源系统pdf 原因:”_ErrMessage
}
//下载文件资源成功关闭连接
if 'Fromftp.Logout(){
s ErrMessage=Fromftp.ReturnMessage
q "-1^退出源系统ftp失败,原因: "_ErrMessage
}
/ 上传ftp文件资源 ***/
//ftp服务器IP地址
s ip=“10.10.0.103”
//ftp服务器用户密码
s username=“ftpuser”
s password=“ftppasswd”
//ftp端口
s port=21
//上传ftp服务器生成的文件名,此处保持和下载的一致
s LisFilename=file
s Date=
z
d
(
+
zd(+
zd(+h,3)
//上传ftp服务器生成的文件目录
s Dir="/lis/"_KaTeX parse error: Expected group after '_' at position 14: p(Date,"-",1)_̲p(Date,"-",2)
//创建ftp连接对象
s Toftp=##class(%Net.FtpSession).%New()
s Toftp.Timeout=“2” //连接超时时间设置成2s
s Toftp.CommandTranslateTable=“GB18030”
//连接ftp
if 'Toftp.Connect(ip,username,password,port){
s ErrMessage=Fromftp.ReturnMessage
q "-1^不能连接到目标系统ftp,原因: "_ErrMessage
}
//设置ftp上写文件的当前目录
if 'Toftp.SetDirectory(Dir){
//目录不存在就创建目录
if ('Toftp.MakeDirectory(Dir)){
q “-1^新建文件夹失败”
}
}
//设置ftp上写文件的当前目录
d Toftp.SetDirectory(Dir)
if 'Toftp.SetDirectory(Dir) {
s ErrMessage=Toftp.ReturnMessage
//失败关闭ftp连接
d Toftp.Logout()
q “-1^数据中心不存在"Dir"文件夹,原因:”_ErrMessage
}
//切换数据传输模式为Binary
If 'Toftp.Binary() Quit “-1^Binary”
//上传文件,用上面下载的文件流往ftp写文件
if 'Toftp.Store(LisFilename,stream) {
s ErrMessage=Toftp.ReturnMessage
//写文件失败关闭连接
d Toftp.Logout()
q “-1^保存到ftp上pdf文件失败”_ErrMessage
}
//上传文件成功关闭连接
if 'Toftp.Logout() {
s ErrMessage=Toftp.ReturnMessage
q “-1^退出数据中心ftp失败”_ErrMessage
}
q “0”
}