【发布时间】:2014-04-16 12:14:41
【问题描述】:
我想使用 FTP 在服务器上上传一个 .class 文件 (ABC.class)。
试过了: 1>
public boolean uploadFileOnFTPServer(File file, String uploadToPath) {
boolean isUploaded = false;
try {
FileInputStream bis = new FileInputStream(file);
if (connectToFTPServer()) {
if (ftpClient.login(userName, password)) {
System.out.println("Logged in to server. Username: " + userName);
if (ftpClient.changeWorkingDirectory(uploadToPath)) {
System.out.println("Navigated to path " + uploadToPath);
if (ftpClient.storeFile(file.getName(), bis)) {
bis.close();
System.out.println("File " + file.getName() + " uploaded to server.");
isUploaded = true;
}
}
} catch (Exception e) {
strRemarks = "Exception reported: Unable to upload file. Error Details: " + e.toString();
System.out.println(strRemarks);
e.printStackTrace();
} finally {
disconnectFTPServer();
}
return isUploaded;
}
也试过了:
2>
InputStream bis = new FileInputStream(file);
3>
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
文件正在上传到服务器,但文件已损坏或内容未正确存储在文件中。
任何人都可以帮忙。
【问题讨论】:
-
您正在调用方法并引用此处未定义的变量。在不知道台下发生了什么的情况下,我们应该如何提供帮助?但最可能的问题是您以 ASCII(文本)模式发送文件;您需要使用 IMAGE(二进制)模式。
-
很抱歉给您带来不便。
connectToFTPServer() - function to connect to server ftpClient - FTPClient ftpClient = null; disconnectFTPServer() - function to get disconnected from server I tried: ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);没用 -
将其设置为非 ASCII 文件类型! ASCII类型是错误的类型,但它是默认的!
-
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);不工作:( -
尝试确定是如何损坏的。尺寸合适吗?某些字节值是一致替换的,还是只是垃圾?在 Linux 上使用“od -t x2”命令(例如)检查良好和损坏的类文件的内容。
标签: java ftp ftp-server