首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用的FTP -错误:没有找到550个数据集(我正在使用的FTPid被附加到文件名中)

使用的FTP -错误:没有找到550个数据集(我正在使用的FTPid被附加到文件名中)
EN

Stack Overflow用户
提问于 2020-10-15 20:47:05
回答 1查看 259关注 0票数 1

我正在尝试将文件从Linux传送到AS400服务器。我能够以被动模式登录到服务器,但当试图使用STOR命令上传文件时出错:

代码语言:javascript
复制
STOR XX.YY600040.XXXZZZXXX        
**550 Dataset not found, DSN=FTPID.XX.YY600040.XXXZZZXXX**

不知道为什么我正在使用的ftpid被添加到文件名的前缀。有什么办法可以避免吗?下面是我使用的示例代码:

代码语言:javascript
复制
private static String sendFTPFile(String fileName) throws Exception {
        StringBuffer ftpMessage = new StringBuffer();
        if (SHOW_DEBUG) ftpMessage.append("<ul>");
        FTPClient ftp = null;
        
        try {
            String server = "****";
            String username = "****";
            String password = "XXXXX";
            String hostDir = "";
            String localFileName = fileName;
            String localFilePath = "***/**/*";
            
            boolean binaryTransfer = false, error = false;
            
            FTPClient ftp = new FTPClient();
            ftp.addProtocolCommandListener(new PrintCommandListener(
                                               new PrintWriter(System.out)));
          
            int reply;
                ftp.connect(server)
                
                // After connection attempt, you should check the reply code to verify
                // success.
                reply = ftp.getReplyCode();

                if (!FTPReply.isPositiveCompletion(reply))
                {
                    ftp.disconnect();
                    error = true;
                }
            
          if(!error) {
                
                    if (!ftp.login(username, password))
                    {
                        ftp.logout();
                        error = true;
                    }
             if(!error) {
                    if (binaryTransfer)
                        ftp.setFileType(FTP.BINARY_FILE_TYPE);

                    // Use passive mode as default 
                    ftp.enterLocalPassiveMode();
                    InputStream input;
                    input = new FileInputStream(localFilePath+localFileName);
                    boolean ftpSuccess = ftp.storeFile(hostDir+localFileName, input);
                    input.close();
                       
                    if (!ftpSuccess) {
                        throw new Exception("File ftp error");
                    }else {
                        if (SHOW_DEBUG) ftpMessage.append("<li>isFtpSuccess()...success").append("</li>");
                    }
                    
                    ftp.logout();
                    if (SHOW_DEBUG) ftpMessage.append("<li>ftp.logout()...success").append("</li>");
                    
             }
        }    
                 
        }
        catch (Exception ex) {
            ex.printStackTrace();
            System.out.println("Exception occur while transfering file using ftp"+ ex.toString());
            throw new Exception(ftpMessage.toString(), ex);
        }
        finally {
            if (ftp!=null && ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                    System.out.println("Exception occur while transfering file using ftp"+ e.toString());
                    throw new Exception(ftpMessage.toString(), e);
                }
            }
        
            if (SHOW_DEBUG) ftpMessage.append("</ul>");
        }
        return ftpMessage.toString();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 17:46:55

我对从linux到as400的ftp做了更多的调试。在登录到ftp服务器后执行pwd时,它给出的消息如下:

ftp> pwd

257“‘FTPID’”是当前前缀

并考虑如何删除该前缀,因此我运行以下命令got输出作为未定义的前缀:

ftp> cd .

200 "“没有前缀定义的

之后,当我使用put命令上传文件时,它成功地上传了。因此,我对如何使用Apache返回一个目录进行了一些研究,并找到了commons.net方法。

当我在上传文件之前运行FTPClient.cdup()方法时。我也能够成功地从java代码中FTP文件。

代码语言:javascript
复制
ftp.cdup();
input = new FileInputStream(localFilePath+localFileName);
boolean ftpSuccess = ftp.storeFile(hostDir+localFileName, input);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64379418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档