久久久久久久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(使用線程逐塊處理文件)
主站蜘蛛池模板: 国产精品久久国产精品 | 自拍在线 | 国产jizz女人多喷水99 | 激情毛片 | 99免费在线观看视频 | 国产精品欧美一区二区三区不卡 | 日日摸夜夜添夜夜添精品视频 | 精品一区二区三区在线视频 | 免费久 | 国产精品久久二区 | 正在播放国产精品 | 久久国产精品99久久久久 | 欧美在线二区 | 久久免费资源 | 亚洲一区中文字幕 | 特级做a爰片毛片免费看108 | 福利片在线 | 久久综合久色欧美综合狠狠 | 久久久xx| 日韩欧美福利视频 | 亚洲bt 欧美bt 日本bt | 日韩国产在线观看 | 特一级毛片 | 亚洲人人| 午夜av影院| 久久久不卡网国产精品一区 | 69福利影院| 日本成人中文字幕在线观看 | 成人动漫一区二区 | 久久av网站| 91福利在线观看 | 一区二区三区在线免费观看 | 免费国产一区二区视频 | 成人免费视屏 | 久久久久久久香蕉 | 草久久免费视频 | 成人国产精品入口免费视频 | 国产精品视频免费观看 | 中文字幕在线一 | 亚洲精品一区在线观看 | 久久亚洲一区二区三区四区 |