【发布时间】:2015-10-11 14:30:04
【问题描述】:
我正在尝试使用 apache.commons.ftp 库将 android 中的文件上传到 FTP 服务器。
注意:我使用storeFileStream 以便跟踪上传进度。
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
InputStream inputStream = new FileInputStream(localFile);
OutputStream outputStream = ftpClient.storeFileStream(remoteFile);
byte[] buffer = new byte[8192];
int bytesRead;
logMessage("Starting to upload file");
while ((bytesRead = inputStream.read(buffer)) != -1) {
total += bytesRead;
outputStream.write(buffer, 0, bytesRead); //output stream is null here
latestPercentDone = (int) ((total / (float) totalMegaBytes) * 100);
if (percentDone != latestPercentDone) {
percentDone = latestPercentDone;
publishProgress(""+percentDone);
}
}
inputStream.close();
outputStream.close();
ftpClient.completePendingCommand();
我正在使用 speedtest.tele2.net 服务器进行测试。使用匿名登录。
日志一直说输出流为空。
编辑:使用 Martin Prikryl 并获取错误代码,我发现问题出在远程文件的位置。
上传到一个位置而不是一个目录。
例如,如果文件名为item1.txt,则远程文件应为/item1.txt 或/someFolder/AnotherFolder/item1.txt 而不是/someFolder/AnotherFolder/
【问题讨论】:
标签: java android ftp apache-commons-net