Java - Не удается сохранить файл на FTP-сервере - PullRequest
2 голосов
/ 20 сентября 2011

Я пытаюсь сохранить byteArrayInputStream как Файл на FTP-сервере .Я уже мог подключиться к серверу и изменить рабочий путь, но запуск метода для сохранения потока в виде файла на сервере всегда возвращает false .

Я использую apache FTPClient.

Может кто-нибудь подсказать, где может быть моя ошибка!?

Вот код:

    String filename = "xyz.xml"

    // connection returns true
    connectToFtpServer(ftpHost, ftpUser, ftpPassword, exportDirectory);

    // byteArray is not void
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);

    try {
        // change returns true
        result = ftpClient.changeWorkingDirectory(exportDirectory);

        // storing the file returns false
        result = ftpClient.storeFile(filename, byteArrayInputStream);

        byteArrayInputStream.close();
        ftpClient.logout();
    } catch (...) {
        ...
    } finally {
        // disconnect returns true
        disconnectFromFtpServer();
    }

Ответы [ 2 ]

0 голосов
/ 28 июня 2012

Это была проблема с правами доступа из-за неверной группы пользователей. После добавления моего пользователя в группу я смог снова сохранять файлы.

0 голосов
/ 20 сентября 2011

Я не верю, что это твой код. Вот еще один пример, который очень похож на кодеява: пакет org.kodejava.example.commons.net;

import org.apache.commons.net.ftp.FTPClient;
import java.io.FileInputStream;
import java.io.IOException;

public class FileUploadDemo {
public static void main(String[] args) {
    FTPClient client = new FTPClient();
    FileInputStream fis = null;

    try {
        client.connect("ftp.domain.com");
        client.login("admin", "secret");

        //
        // Create an InputStream of the file to be uploaded
        //
        String filename = "Touch.dat";
        fis = new FileInputStream(filename);

        //
        // Store file to server
        //
        client.storeFile(filename, fis);
        client.logout();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fis != null) {
                fis.close();
            }
            client.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 }
 }

Я согласен, это права доступа к файлам. Пока нет способа изменить разрешения в самой java, но есть и другие решения. Смотрите эту ветку: Как программно изменить права доступа к файлу?

НТН,

Джеймс

...