久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Apache Commons Net FTP 正在上傳損壞的文件

Apache Commons Net FTP is uploading corrupted files(Apache Commons Net FTP 正在上傳損壞的文件)
本文介紹了Apache Commons Net FTP 正在上傳損壞的文件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在嘗試使用 Apache Commons Net 進行 FTP 文件傳輸.

I'm trying to use Apache Commons Net for FTP file transfers.

問題是文件間歇性地到達服務器損壞.損壞"是指 WinRAR 告訴我一個 ZIP 文件有一個 意外結束存檔".有時文件完全是空的.我注意到大文件 (100kb+) 會發生這種情況,但小文件 (20kb) 也會發生這種情況.

Problem is files are intermittently arriving at the server corrupt. By 'corrupt' I mean that WinRAR tells me a ZIP file has an 'Unexpected end of archive'. Sometimes the files are completely empty. I have noticed that this happens more for larger files (100kb+), however does happen for small files too (20kb).

我知道上傳的源 zip 文件是有效的,并且只有 243kb.

I know for a fact that the source zip file being uploaded is valid, and is only 243kb.

我沒有從代碼中得到任何錯誤/異常.

I do not get any errors/exceptions from the code.

這是正在執行的代碼:

int CON_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(20); // fail if can't connect within 20 seconds
int LIVE_TIMEOUT = (int) TimeUnit.MINUTES.toMillis(5); // allow up to 5 minutes for data transfers

FTPClient client = new FTPClient();
client.setConnectTimeout(CON_TIMEOUT);
client.setDataTimeout(LIVE_TIMEOUT);
client.connect(host);
client.setSoTimeout(LIVE_TIMEOUT);
client.login(user, pass);
client.changeWorkingDirectory(dir);
log("client ready");

File file = new File(filePath);
String name = new Date().getTime() + "-" + file.getName();

InputStream fis = null;
try
{
    fis = new FileInputStream(file);
    if (!client.storeFile(name, fis))
        throw new RuntimeException("store failed");
    log("store " + name + " complete");
}
finally
{
    IOUtils.closeQuietly(fis);
    try
    {
        client.logout();
        log("logout");
    }
    catch (Throwable e)
    {
        log("logout failed", e);
    }
    try
    {
        client.disconnect();
        log("disconnect");
    }
    catch (Throwable e)
    {
        log("disconnect failed", e);
    }
}

還有一些日志:

2010-08-10 21:32:38 client ready
2010-08-10 21:32:49 store 1281439958234-file.zip complete
2010-08-10 21:32:49 logout
2010-08-10 21:32:49 disconnect
2010-08-10 21:32:50 client ready
2010-08-10 21:33:00 store 1281439970968-file.zip complete
2010-08-10 21:33:00 logout
2010-08-10 21:33:00 disconnect
2010-08-10 21:33:02 client ready
2010-08-10 21:33:11 store 1281439982234-file.zip complete
2010-08-10 21:33:11 logout
2010-08-10 21:33:11 disconnect
2010-08-10 21:33:15 client ready
2010-08-10 21:33:25 store 1281439995890-file.zip complete
2010-08-10 21:33:26 logout
2010-08-10 21:33:26 disconnect
2010-08-10 21:33:27 client ready
2010-08-10 21:33:36 store 1281440007531-file.zip complete
2010-08-10 21:33:36 logout
2010-08-10 21:33:36 disconnect
2010-08-10 21:33:37 client ready
2010-08-10 21:33:48 store 1281440017843-file.zip complete
2010-08-10 21:33:48 logout
2010-08-10 21:33:48 disconnect
2010-08-10 21:33:49 client ready
2010-08-10 21:33:59 store 1281440029781-file.zip complete
2010-08-10 21:33:59 logout
2010-08-10 21:33:59 disconnect
2010-08-10 21:34:00 client ready
2010-08-10 21:34:09 store 1281440040812-file.zip complete
2010-08-10 21:34:09 logout
2010-08-10 21:34:09 disconnect
2010-08-10 21:34:10 client ready
2010-08-10 21:34:23 store 1281440050859-file.zip complete
2010-08-10 21:34:24 logout
2010-08-10 21:34:24 disconnect
2010-08-10 21:34:25 client ready
2010-08-10 21:34:35 store 1281440065421-file.zip complete
2010-08-10 21:34:35 logout
2010-08-10 21:34:35 disconnect

請注意,所有這些都在 15 秒內完成,并且服務器上的所有生成文件都已損壞.

Note that all of these were complete within 15 seconds, and all of the resulting files on the server are corrupt.

我也進行了測試,沒有設置任何超時,問題仍然存在.

I have also tested without setting any timeouts and the problem still occurs.

推薦答案

Common FTP 默認為 Ascii 文件類型.在處理 ZIP 文件等二進制數據時,您希望將其設置為 Binary.

Commons FTP defaults to Ascii file types. You want to set it to Binary when dealing with binary data like a ZIP file.

來自 http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html

FTPClient 的默認設置是使用 FTP.ASCII_FILE_TYPE 、 FTP.NON_PRINT_TEXT_FORMAT 、 FTP.STREAM_TRANSFER_MODE 和 FTP.FILE_STRUCTURE .唯一直接支持的文件類型是 FTP.ASCII_FILE_TYPE 和 FTP.BINARY_FILE_TYPE .

The default settings for FTPClient are for it to use FTP.ASCII_FILE_TYPE , FTP.NON_PRINT_TEXT_FORMAT , FTP.STREAM_TRANSFER_MODE , and FTP.FILE_STRUCTURE . The only file types directly supported are FTP.ASCII_FILE_TYPE and FTP.BINARY_FILE_TYPE .

您想在發送文件之前執行 setFileType(FTP.BINARY_FILE_TYPE).

You want to do setFileType(FTP.BINARY_FILE_TYPE) before you send the file.

這篇關于Apache Commons Net FTP 正在上傳損壞的文件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數據庫)
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: 国产一区二区在线看 | 久久精品日韩 | 成人网av| 国产欧美日韩一区 | 在线a| 欧美日韩激情视频 | 福利视频一区二区 | 日本熟妇毛耸耸xxxxxx | 久久一级片| 欧美视频一区二区三区 | 欧美裸体视频 | 国产中文一区 | 性色av网站| 午夜精品在线观看 | 色视频www在线播放国产人成 | 久插视频 | 精品国产欧美一区二区三区成人 | 精品亚洲一区二区 | 国产精品三级在线 | 涩涩的视频 | 老司机深夜福利视频 | 亚洲乱码在线观看 | 午夜免费福利 | 欧美三级韩国三级日本三斤在线观看 | 中文字幕在线免费看 | 在线观看小视频 | 欧美又粗又长 | 亚洲激情一区 | 亚洲裸体视频 | 欧美一区二区三区在线视频 | 国产日韩免费 | 成人激情在线 | 欧美成人一级片 | 欧美性猛交xxxx黑人猛交 | 欧美成人免费 | 一区在线视频 | 日韩精品综合 | 成人片在线看 | 国产中文在线 | 亚洲精品不卡 | 国产区视频在线观看 |