应公司开发需要,需要从网络上抓取一些图片
如何将图片使用代码的方式放到服务器的目录下
公司对我开了一个端口为911的FTP账号
下面的代码就是Java模拟FTP将本地保存的图片上传到服务器
package com.dd1258.ftp;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
public class FTP {
private static Logger logger = Logger.getLogger(FTP.class);
public static void main(String[] args) {
String ftpHost = "************";
int ftpPort = 911;
String ftpUserName = "******************";
String ftpPassword = "*******************";
String fileContent = "";
String writeTempFielPath = "";
String ftpPath = "";
FTP f = new FTP();
f.upload(ftpPath, ftpUserName, ftpPassword, ftpHost, ftpPort, fileContent, writeTempFielPath);
}
/**
* 本地上传文件到FTP服务器
*
* @param ftpPath
* 远程文件路径FTP
* @throws IOException
*/
public void upload(String ftpPath, String ftpUserName, String ftpPassword, String ftpHost, int ftpPort,
String fileContent, String writeTempFielPath) {
FTPClient ftpClient = null;
System.out.println("开始上传文件到FTP.");
try {
ftpClient = FTP.getFTPClient(ftpHost, ftpPassword, ftpUserName, ftpPort);
// 设置PassiveMode传输
ftpClient.enterLocalPassiveMode();
// 设置以二进制流的方式传输
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 对远程目录的处理
String remoteFileName = ftpPath; // -> /ddweb/LJ_TEST/f.txt
if (ftpPath.contains("/")) {
remoteFileName = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
}
// FTPFile[] files = ftpClient.listFiles(new
// String(remoteFileName));
// 先把文件写在本地。在上传到FTP上最后在删除
//boolean writeResult = write(remoteFileName, fileContent, writeTempFielPath);
if (true) {
//File f = new File(writeTempFielPath + "/" + remoteFileName);
File f = new File("G:/PythonSource/DD_MV/img/3.jpg");
InputStream in = new FileInputStream(f);
String lastpath = "/ddweb/LJ_TEST/"+"a.jpg";
ftpClient.storeFile(lastpath, in);
in.close();
logger.info("上传文件" + remoteFileName + "到FTP成功!");
//f.delete();
} else {
logger.info("写文件失败!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 将配置文件写到本地去 返回true和false
* @param fileName
* @param fileContext
* @param writeTempFielPath
* @return
*/
public boolean write(String fileName, String fileContext, String writeTempFielPath) {
try {
logger.info("开始写配置文件");
File f = new File(writeTempFielPath + "/" + fileName);
if (!f.exists()) {
if (!f.createNewFile()) {
logger.info("文件不存在,创建失败!");
}
}
BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
bw.write(fileContext.replaceAll("\n", "\r\n"));
bw.flush();
bw.close();
return true;
} catch (Exception e) {
logger.error("写文件没有成功");
e.printStackTrace();
return false;
}
}
public static FTPClient getFTPClient(String ftpHost, String ftpPassword,
String ftpUserName, int ftpPort) {
FTPClient ftpClient = null;
try {
ftpClient = new FTPClient();
ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器
ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
logger.info("未连接到FTP,用户名或密码错误。");
ftpClient.disconnect();
} else {
logger.info("FTP连接成功。");
}
} catch (SocketException e) {
e.printStackTrace();
logger.info("FTP的IP地址可能错误,请正确配置。");
} catch (IOException e) {
e.printStackTrace();
logger.info("FTP的端口错误,请正确配置。");
}
System.out.println("---------------------连接成功----------------------");
System.out.println(ftpClient);
return ftpClient;
}
}