【问题标题】:Upload Files to Mainframes from VB.net从 VB.net 将文件上传到大型机
【发布时间】:2009-10-29 02:06:31
【问题描述】:

我正在尝试将文件从我的电脑上传到大型机。我正在尝试使用 Chilkat FTP2 上传它。下面是代码。

我要上传的文件是 2009102600000

Dim ftp As New Chilkat.Ftp2()

Dim success As Boolean

' Any string unlocks the component for the 1st 30-days.'
success = ftp.UnlockComponent("Anything for 30-day trial")
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


ftp.Hostname = "www.myside.com"
ftp.Username = "****"
ftp.Password = "****"

' The default data transfer mode is "Active" as opposed to "Passive".'
' Change it to Passive by setting the Passive property:'
ftp.Passive = true

' Connect and login to the FTP server.'
success = ftp.Connect()
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


' Change to the remote directory where the file will be uploaded.'
success = ftp.ChangeRemoteDir("ABC.SITEUPLOAD.UPLOAD")
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


' Upload a file.'
Dim localFilename As String
localFilename = "c:\2009102600000"
Dim remoteFilename As String
remoteFilename = "2009102600000"

success = ftp.PutFile(localFilename,remoteFilename)
If (success <> true) Then
    MsgBox(ftp.LastErrorText)
    Exit Sub
End If


ftp.Disconnect()

MsgBox("File Uploaded!")

我得到的错误是未找到使用 MVS dsn 名称或类似名称的数据集。

如果您能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: vb.net ftp mainframe


    【解决方案1】:

    我完全不确定您是否可以将数据集前缀视为目录。当我使用 ftp 上传到大型机时,我总是只指定完整的目标名称。我会摆脱

    ftp.ChangeRemoteDir("ABC.SITEUPLOAD.UPLOAD")
    

    完全和只是改变部分:

    remoteFilename = "2009102600000"
    

    到:

    remoteFilename = "'ABC.SITEUPLOAD.UPLOAD.2009102600000'"
    

    如果是顺序数据集,或者:

    remoteFilename = "'ABC.SITEUPLOAD.UPLOAD(2009102600000)'"
    

    如果它是成员(在这种情况下,数据集必须首先存在)。

    如果您更改了MsgBox 语句,以便它们包含关于是什么 实际导致错误的指示,这也会有所帮助。大致如下:

    MsgBox("Connect error: " & ftp.LastErrorText)
    MsgBox("ChangeRemoteDir error: " & ftp.LastErrorText)
    MsgBox("PutFile error: " & ftp.LastErrorText)
    

    而不是通用的:

    MsgBox(ftp.LastErrorText)
    

    另外一点:你会注意到我在上面的目标周围加上了单引号。那是因为 z/OS 有一个习惯,即(有时)将您的登录名作为成员的前缀。可能是这样的:

    put xyz.txt upload(xyz)
    

    实际上是在尝试将其放入yourname.upload(xyz)。引用它可以防止这种情况发生。

    更新:你知道,我刚刚注意到一些在我第一次阅读这个问题时完全逃脱的东西。错误信息一目了然。

    分区数据集中的数据集名称段和成员名称限制为 8 个字符。因此,您的'ABC.SITEUPLOAD.UPLOAD(2009102600000)'两个 计数上无效,即SITEUPLOAD2009102600000。尝试缩短名称并重新传输。

    这是证据:

    C:\Documents and Settings\Pax> ftp bigiron
    Connected to bigiron.box.com.
    220-FTPD1 IBM FTP CS V1R9 at BIGIRON.BOX.COM, 02:15:23 on 2009-11-06.
    220 Connection will close if idle for more than 5 minutes.
    User (bigiron.box.com:(none)): pax
    331 Send password please.
    Password:
    230 PAX is logged on.  Working directory is "PAX.".
    
    ftp> put test.txt 'pax.siteupload'
    200 Port request OK.
    501 Invalid data set name "'pax.siteupload'".  Use MVS Dsname conventions.
    
    ftp> put test.txt 'pax.siteupld'
    200 Port request OK.
    125 Storing data set PAX.SITEUPLD
    250 Transfer completed successfully.
    ftp: 177 bytes sent in 0.00Seconds 177000.00Kbytes/sec.
    
    ftp> put test.txt 'pax.jcl(abcdefghi)'
    200 Port request OK.
    501 Invalid data set name "'pax.jcl(abcdefghi)'".  Use MVS Dsname conventions.
    
    ftp> put test.txt 'pax.jcl(abcdefgh)'
    200 Port request OK.
    125 Storing data set PAX.JCL(ABCDEFGH)
    250 Transfer completed successfully.
    ftp: 177 bytes sent in 0.00Seconds 177000.00Kbytes/sec.
    
    ftp> bye
    221 Quit command received. Goodbye.
    

    【讨论】:

    • Paxdiablo,感谢您的友好回复。但我尝试了你提到的所有选项但我仍然得到同样的错误。我可以下载文件但不能上传。请收下
    • @acadia,有几个问题(1)它是一个序列尾数据集还是 PDS(E) 的成员? (2) 您可以登录该框并使用 ISPF 获取有关该成员的信息 - 使用选项 3.4 DSLIST 和“i”行命令吗? (3) 登录到 ISPF 后,您可以编辑该成员吗(可能存在 RACF 问题)? (4) 你得到了哪个错误,connect、chdir 还是 put?
    • (5) 显示您收到的exact 错误消息。如果我无法为您提供这些信息,您可能需要求助于您的系统程序 - 他们将能够根据大铁上的系统日志确定您在做什么。
    • Paxdiablo,抱歉延迟回复。我仍然无法解决问题。以下是我收到的错误 STOR failed Filename: 'ABC.SITEUPLOAD.UPLOAD(1250178379029)' FtpResponse24: 501 Invalid data set name "'ABC.SITEUPLOAD.UPLOAD(1250178379029)'"。使用 MVS Dsname 约定。失败。
    • 我知道这个问题很老,但我只是偶然发现了它。成员名称 1250178379029 无效,因为在 MVS 下名称必须以字母字符开头,并且不得超过 8 个字符。
    【解决方案2】:

    您确定不需要将其存储为根目录中的世代数据集吗?像这样:

    'ABC.SITEUPLOAD.UPLOAD.2009102600000(+1)'
    

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2022-10-20
      • 1970-01-01
      • 2020-12-28
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多