Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Ftp集成-服务器回复为:553 Can';t打开那个文件:没有这样的文件或目录_Java_Spring_Ftp - Fatal编程技术网

Java Spring Ftp集成-服务器回复为:553 Can';t打开那个文件:没有这样的文件或目录

Java Spring Ftp集成-服务器回复为:553 Can';t打开那个文件:没有这样的文件或目录,java,spring,ftp,Java,Spring,Ftp,我在工作中有一个要求,就是实现2个CSV文件到远程服务器的FTP传输。我已经成功地实现了SFTP,文件正在传输,但是当我尝试FTP时,我得到了以下错误(见下文)。我使用我的Hostgator FTP帐户测试了代码。我有书面许可和一切。还尝试使用WinSCP(ftp客户端)将文件传输到同一位置,效果良好 java.io.IOException: Failed to write to '/home2/etc/public_html/test/Ticket Dump 2015-04-28 09:51.

我在工作中有一个要求,就是实现2个CSV文件到远程服务器的FTP传输。我已经成功地实现了SFTP,文件正在传输,但是当我尝试FTP时,我得到了以下错误(见下文)。我使用我的Hostgator FTP帐户测试了代码。我有书面许可和一切。还尝试使用WinSCP(ftp客户端)将文件传输到同一位置,效果良好

java.io.IOException: Failed to write to '/home2/etc/public_html/test/Ticket Dump 2015-04-28 09:51.csv.writing'. Server replied with: 553 Can't open that file: No such file or directory
这是我的密码:

ftp config.xml

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xmlns:int-ftp="http://www.springframework.org/schema/integration/ftp"
   xsi:schemaLocation="http://www.springframework.org/schema/integration/ftp http://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd
            http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<bean id="ftpClientFactory"
      class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
    <property name="host" value="ftp.webaddress.com"/>
    <property name="port" value="21"/>
    <property name="username" value="ticket@webaddress.com"/>
    <property name="password" value="mypassword"/>
    <property name="clientMode" value="0"/>
</bean>

<int:channel id="ftpChannel" />

<int-ftp:outbound-channel-adapter id="ftpOutbound"
                                  channel="ftpChannel"
                                  remote-directory="/home2/etc/public_html/test"
                                  session-factory="ftpClientFactory"/>

我无法找出这个错误的原因,所以我放弃了SpringFTP,并提出了一个不同的实现。希望这对别人有帮助

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;



@Service
public class FtpTransportService {

    public void ftpTransport(List<File> files){

        String server = "webaddress.com";
        int port = 21;
        String user = "username";
        String pass = "password";

        FTPClient ftpClient = new FTPClient();

        try {

            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();

            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);


            // iterative the files and transfer
            for (File file : files) {

                String RemoteFile = file.getName().toString();
                InputStream inputStream = new FileInputStream(file);

                System.out.println("Start uploading first file");
                boolean done = ftpClient.storeFile(RemoteFile, inputStream);
                inputStream.close();
                if (done) {
                    System.out.println("The first file is uploaded successfully.");
                }
            }

        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}
import org.apache.commons.net.ftp.ftp;
导入org.apache.commons.net.ftp.FTPClient;
导入org.springframework.stereotype.Service;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.List;
@服务
公共类FTPTTransportService{
公共无效FTPTTransport(列出文件){
String server=“webaddress.com”;
int端口=21;
字符串user=“username”;
字符串pass=“password”;
FTPClient FTPClient=新的FTPClient();
试一试{
ftpClient.connect(服务器、端口);
ftpClient.login(用户,通过);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY文件类型);
//迭代文件和传输
用于(文件:文件){
字符串RemoteFile=file.getName().toString();
InputStream InputStream=新文件InputStream(文件);
System.out.println(“开始上传第一个文件”);
布尔值done=ftpClient.storeFile(RemoteFile,inputStream);
inputStream.close();
如果(完成){
System.out.println(“第一个文件已成功上载”);
}
}
}捕获(IOEX异常){
System.out.println(“错误:+ex.getMessage());
例如printStackTrace();
}最后{
试一试{
如果(ftpClient.isConnected()){
ftpClient.logout();
ftpClient.disconnect();
}
}捕获(IOEX异常){
例如printStackTrace();
}
}
}
}
    Exception in thread "main" org.springframework.integration.MessageDeliveryException: Error handling message for file [Ticket Dump 2015-04-28 10:15.csv]
    at org.springframework.integration.file.remote.handler.FileTransferringMessageHandler.handleMessageInternal(FileTransferringMessageHandler.java:129)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:110)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:61)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:157)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:128)
    at ie.service.ftp.FtpTransportService.ftpTransport(FtpTransportService.java:34)
    at ie.service.ticket.TicketReportService.runReport(TicketReportService.java:60)
    at ie.ManualRunner.main(ManualRunner.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: org.springframework.integration.MessagingException: Failed to write to '/home2/etc/public_html/test/Ticket Dump 2015-04-28 10:15.csv.writing' while uploading the file
    at org.springframework.integration.file.remote.handler.FileTransferringMessageHandler.sendFileToRemoteDirectory(FileTransferringMessageHandler.java:205)
    at org.springframework.integration.file.remote.handler.FileTransferringMessageHandler.handleMessageInternal(FileTransferringMessageHandler.java:118)
    ... 14 more
Caused by: java.io.IOException: Failed to write to '/home2/etc/public_html/test/Ticket Dump 2015-04-28 10:15.csv.writing'. Server replied with: 553 Can't open that file: No such file or directory

    at org.springframework.integration.ftp.session.FtpSession.write(FtpSession.java:81)
    at org.springframework.integration.file.remote.session.CachingSessionFactory$CachedSession.write(CachingSessionFactory.java:141)
    at org.springframework.integration.file.remote.handler.FileTransferringMessageHandler.sendFileToRemoteDirectory(FileTransferringMessageHandler.java:200)
    ... 15 more
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.springframework.stereotype.Service;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;



@Service
public class FtpTransportService {

    public void ftpTransport(List<File> files){

        String server = "webaddress.com";
        int port = 21;
        String user = "username";
        String pass = "password";

        FTPClient ftpClient = new FTPClient();

        try {

            ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();

            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);


            // iterative the files and transfer
            for (File file : files) {

                String RemoteFile = file.getName().toString();
                InputStream inputStream = new FileInputStream(file);

                System.out.println("Start uploading first file");
                boolean done = ftpClient.storeFile(RemoteFile, inputStream);
                inputStream.close();
                if (done) {
                    System.out.println("The first file is uploaded successfully.");
                }
            }

        } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}