java ftp上传图片路径_java FTP方式上传文件到图片服务器

因为图片很多,所以无法,在网上搜了一种方式:1.FTPClient 经过测试然而并不理想,报了一个错:org.apache.commons.net.MalformedServerReplyException: Could not parse response code. Server Reply: SSH-2.0-OpenSSH_4.3org.apache.commons.net.MalformedServerReplyException: Could not parse response code. Server Reply: SSH-2.0-OpenSSH_4.3

import java.io.File;

import java.io.FileInputStream;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPReply;

public class FTPUpload {

private FTPClient ftp;

private String path;

private String addr;

private int port;

private String userName;

private String pwd;

public FTPUpload(){

this.path="/home/samba";

this.addr="121.40.172.1";

this.port=22;

this.userName="root";

this.pwd="86b63949";

try {

connect();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

*

* @param path

*            上传到ftp服务器哪个路径下

* @param addr

*            地址

* @param port

*            端口号

* @param username

*            用户名

* @param password

*            密码

* @return

* @throws Exception

*/

private boolean connect() throws Exception {

boolean result = false;

ftp = new FTPClient();

int reply;

ftp.connect(addr, port);

ftp.login(userName, pwd);

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return result;

}

ftp.changeWorkingDirectory(path);

result = true;

return result;

}

/**

*

* @param file

*            上传的文件或文件夹

* @throws Exception

*/

private void upload(File file) throws Exception {

if (file.isDirectory()) {

ftp.makeDirectory(file.getName());

ftp.changeWorkingDirectory(file.getName());

String[] files = file.list();

for (int i = 0; i < files.length; i++) {

File file1 = new File(file.getPath() + "\\" + files[i]);

if (file1.isDirectory()) {

upload(file1);

ftp.changeToParentDirectory();

} else {

File file2 = new File(file.getPath() + "\\" + files[i]);

FileInputStream input = new FileInputStream(file2);

ftp.storeFile(file2.getName(), input);

input.close();

}

}

} else {

File file2 = new File(file.getPath());

FileInputStream input = new FileInputStream(file2);

ftp.storeFile(file2.getName(), input);

input.close();

}

}

public static void main(String[] args) throws Exception {

FTPUpload t = new FTPUpload();

File file = new File("/Users/xxx/Downloads/1.doc");

t.upload(file);

}

}

最后在网上搜,找到原因了。如果服务器是sftp方式,那么不能使用FTPClient连接了,需要使用另外一段代码

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import java.util.Vector; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.SftpException; public class MySFTP { /** * 连接sftp服务器 * @param host 主机 * @param port 端口 * @param username 用户名 * @param password 密码 * @return */ public ChannelSftp connect(String host, int port, String username, String password) { ChannelSftp sftp = null; try { JSch jsch = new JSch(); jsch.getSession(username, host, port); Session sshSession = jsch.getSession(username, host, port); System.out.println("Session created."); sshSession.setPassword(password); Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); sshSession.setConfig(sshConfig); sshSession.connect(); System.out.println("Session connected."); System.out.println("Opening Channel."); Channel channel = sshSession.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; System.out.println("Connected to " + host + "."); } catch (Exception e) { } return sftp; } /** * 上传文件 * @param directory 上传的目录 * @param uploadFile 要上传的文件 * @param sftp */ public void upload(String directory, String uploadFile, ChannelSftp sftp) { try { sftp.cd(directory); File file=new File(uploadFile); sftp.put(new FileInputStream(file), file.getName()); } catch (Exception e) { e.printStackTrace(); } } /** * 下载文件 * @param directory 下载目录 * @param downloadFile 下载的文件 * @param saveFile 存在本地的路径 * @param sftp */ public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) { try { sftp.cd(directory); File file=new File(saveFile); sftp.get(downloadFile, new FileOutputStream(file)); } catch (Exception e) { e.printStackTrace(); } } /** * 删除文件 * @param directory 要删除文件所在目录 * @param deleteFile 要删除的文件 * @param sftp */ public void delete(String directory, String deleteFile, ChannelSftp sftp) { try { sftp.cd(directory); sftp.rm(deleteFile); } catch (Exception e) { e.printStackTrace(); } } /** * 列出目录下的文件 * @param directory 要列出的目录 * @param sftp * @return * @throws SftpException */ public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException{ return sftp.ls(directory); } public static void main(String[] args) { MySFTP sf = new MySFTP(); String host = "192.168.0.1"; int port = 22; String username = "root"; String password = "root"; String directory = "/home/httpd/test/"; String uploadFile = "D:\\tmp\\upload.txt"; String downloadFile = "upload.txt"; String saveFile = "D:\\tmp\\download.txt"; String deleteFile = "delete.txt"; ChannelSftp sftp=sf.connect(host, port, username, password); sf.upload(directory, uploadFile, sftp); sf.download(directory, downloadFile, saveFile, sftp); sf.delete(directory, deleteFile, sftp); try{ sftp.cd(directory); sftp.mkdir("ss"); System.out.println("finished"); }catch(Exception e){ e.printStackTrace(); } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值