ftp上传,加入线程

来源:互联网 发布:初学者造价软件 编辑:程序博客网 时间:2024/05/16 07:01
这是当时用来上传文件服务器的方法,仅供参考import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPReply;import org.apache.log4j.Logger;import sun.misc.BASE64Decoder;public class UploadFileToFTP {    public static void main(String[] args) {            String imgStr="二进制字符串";            upLoadFromProduction(imgStr,"url", 端口, "username", "password", "uploads/"+DateFormateUtil.getStringDateShort()+"/", "12345.png");    }//  static ExecutorService fixedThreadPool = Executors.newFixedThreadPool(8);    static Logger logger = Logger.getLogger(UploadFileToFTP.class.getName ()) ;    /**    * 将接收的字符串转换成二进制流并上传FTP服务器    * @param imgStr 二进制流转换的字符串    * @param imgSavePath 图片的保存路径    * @param imgSaveName 图片的保存名称    * @param ip ftp服务器IP地址    * @param port 服务器端口    * @param username 登录名    * @param password 登录密码    * @return    * 1:保存正常    * 0:保存失败    */    public synchronized static void  upLoadFromProduction(final String imgStr,            final String ip,final int port,final String username,final String password,final String imgSavePath,final String imgSaveName){//      fixedThreadPool.execute(new Runnable(){            new Thread(new Runnable(){            public void run(){                if(imgStr != null && imgStr.length() > 0){                // 将字符串转换成二进制,用于显示图片                // 将上面生成的图片格式字符串 imgStr,还原成图片显示//              byte[] imgByte = hex2byte( imgStr );                    byte[] imgByte;                    try {                        imgByte = new BASE64Decoder().decodeBuffer(imgStr);                InputStream in = new ByteArrayInputStream(imgByte);                if(!uploadFile(ip, port, username, password, imgSavePath, imgSaveName, in)){//上传图片                    logger.info("文件路径:"+imgSavePath);                    logger.info("上传失败:"+imgSaveName);                }else{                    logger.info("文件路径:"+imgSavePath);                    logger.info("上传成功:"+imgSaveName);                }                    } catch (IOException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }            }            }).start();}    /**     * Description: 向FTP服务器上传文件     * @Version      1.0     * @param url FTP服务器hostname     * @param port  FTP服务器端口     * @param username FTP登录账号     * @param password  FTP登录密码     * @param path  FTP服务器保存目录     * @param filename  上传到FTP服务器上的文件名     * @param input   输入流     * @return 成功返回true,否则返回false *     */    public static boolean uploadFile(String url,// FTP服务器hostname            int port,// FTP服务器端口            String username, // FTP登录账号            String password, // FTP登录密码            String path, // FTP服务器保存目录            String filename, // 上传到FTP服务器上的文件名            InputStream input // 输入流    ){        boolean success = false;        FTPClient ftp = new FTPClient();        ftp.setControlEncoding("GBK");        try {            int reply;            ftp.setConnectTimeout(10000);            ftp.connect(url, port);// 连接FTP服务器            // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器            ftp.login(username, password);// 登录            reply = ftp.getReplyCode();            if (!FTPReply.isPositiveCompletion(reply)) {                ftp.disconnect();                return success;            }            //设置PassiveMode传输   设为被动             ftp.enterLocalPassiveMode();            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);            if(path!=null&&!path.equals("")){            String[] paths = path.split("/");            for(int i=0;i<paths.length;i++){                if(!ftp.changeWorkingDirectory(paths[i])){                    ftp.makeDirectory(paths[i]);                    ftp.changeWorkingDirectory(paths[i]);                }            }            }else{                ftp.makeDirectory(path);                ftp.changeWorkingDirectory(path);            }            if(!ftp.storeFile(filename, input)){                logger.info("无读写权限:"+filename);                return success;            }            input.close();            ftp.logout();            success = true;        } catch (IOException e) {            e.printStackTrace();        } finally {            if (ftp.isConnected()) {                try {                    ftp.disconnect();                } catch (IOException ioe) {                    ioe.printStackTrace();                }            }        }        return success;    }    /**    * 字符串转二进制    * @param str 要转换的字符串    * @return 转换后的二进制数组    */    public static byte[] hex2byte(String str) { // 字符串转二进制    if (str == null)    return null;    str = str.trim();    int len = str.length();    if (len == 0 || len % 2 != 0)    return null;    byte[] b = new byte[len / 2];    try {    for (int i = 0; i < str.length(); i += 2) {    b[i / 2] = (byte) Integer    .decode("0X" + str.substring(i, i + 2)).intValue();    }    return b;    } catch (Exception e) {    return null;    }    } /**    *这个方法不是很好,最好用base64加密转换    * 二进制转字符串    * @param b    * @return    */    public static String byte2hex(byte[] b) // 二进制转字符串    {    StringBuffer sb = new StringBuffer();    String stmp = "";    for (int n = 0; n < b.length; n++) {    stmp = Integer.toHexString(b[n] & 0XFF);    if (stmp.length() == 1) {    sb.append("0" + stmp);    } else {    sb.append(stmp);    }    }    return sb.toString();    }}
1 0
原创粉丝点击