Java实现FTP上传图片到服务器

1 篇文章 0 订阅

应公司开发需要,需要从网络上抓取一些图片
如何将图片使用代码的方式放到服务器的目录下
公司对我开了一个端口为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;  
    }  
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值