Setelah gambar diunggah ke server ftp, gambar tidak dapat dibuka - formatnya telah berubah [duplikat]

Saya mempunyai masalah dengan aplikasi booting pegas saya. Saat saya mengunggah file ke server ftp saya, file tersebut entah bagaimana mengubah formatnya. Saya tidak bisa membuka gambarnya lagi.

Saya menguploadnya melalui thymeleaf.
Di Controller saya menggunakan layanan upload`dengan metode di bawah ini:

    public void fileUpload(MultipartFile file) {
        try {
            FtpClient ftp = new FtpClient(ftpHost, ftpPort, ftpUser, ftpPassword);
            ftp.open();
            String tmpdir = System.getProperty("java.io.tmpdir");
            File physicalFile = new File(tmpdir+file.getOriginalFilename());
            file.transferTo(physicalFile);
            ftp.putFileToPath(physicalFile, file.getOriginalFilename());
            ftp.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
}

Dan inilah metode FtpClient saya:

public void open() throws IOException {
    ftp = new FTPClient();

    ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));

    ftp.connect(server, port);
    int reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
        ftp.disconnect();
        throw new IOException("Exception in connecting to FTP Server");
    }

    ftp.login(user, password);
}

public void close() throws IOException {
    ftp.disconnect();
}

public void putFileToPath(File file, String path) throws IOException {
    ftp.storeFile(path, new FileInputStream(file));
}

Semuanya berfungsi - file muncul di server, bahkan memiliki bobot yang sama.
... tetapi saya tidak dapat membukanya.
Program grafis apa pun yang saya coba gunakan untuk membukanya mengatakan bahwa format filenya salah ...

masukkan deskripsi gambar di sini

Ada ide?


person Mateusz Niedbal    schedule 06.10.2020    source sumber
comment
sejak kapan sebuah file mempunyai bobot?   -  person Luuk    schedule 06.10.2020
comment
sejak Newton menemukan gravitasi   -  person Mateusz Niedbal    schedule 06.10.2020
comment
apakah Anda yakin kedua file (lokal dan jarak jauh) memiliki ukuran yang sama (dalam byte!)., jika tidak, lihat ini tentang setFileTypd stackoverflow.com/questions/44194256/   -  person Luuk    schedule 06.10.2020
comment
sebenarnya saya sudah mengeceknya dan selisihnya seperti 1 byte   -  person Mateusz Niedbal    schedule 06.10.2020
comment
Dengan filetype Anda dapat mengubah transfer dari ASCII ke BINARY. Anda memerlukan file ini ditransfer BINARY untuk menjaga ukuran yang sama. (saya tidak tahu apakah itu mengubah berat badan juga ????)   -  person Luuk    schedule 06.10.2020
comment
Yah, berat komputer pastinya tidak :)   -  person Mateusz Niedbal    schedule 06.10.2020
comment
Ya, saya telah menambahkan {ftp.setFileType(FTP.BINARY_FILE_TYPE);} tetapi tidak ada yang berubah. Ada file jpg yang tidak terbaca, ada pula yang hancur menjadi dua, file pdf juga ikut hancur (teks, baris, dll hilang)   -  person Mateusz Niedbal    schedule 06.10.2020
comment
melalui ftp.login(pengguna, kata sandi); garis   -  person Mateusz Niedbal    schedule 06.10.2020
comment
YA !!! terima kasih, ini berfungsi sekarang!!! sudah selesai sebelumnya, dan seharusnya setelahnya :) terima kasih banyak   -  person Mateusz Niedbal    schedule 06.10.2020


Jawaban (1)


di kelas FtpClient saya - Saya telah menambahkan satu baris
dalam metode void open():

public void open() throws IOException {
    ftp = new FTPClient();

    ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
    ftp.connect(server, port);
    int reply = ftp.getReplyCode();
    if (!FTPReply.isPositiveCompletion(reply)) {
        ftp.disconnect();
        throw new IOException("Exception in connecting to FTP Server");
    }

    ftp.login(user, password);

    //      IT WAS THE PROBLEM - I didn't have it:
    ftp.setFileType(FTP.BINARY_FILE_TYPE);

}

terimakasih atas bantuannya

person Mateusz Niedbal    schedule 06.10.2020