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
- ftp上传,加入线程
- ftp上传
- ftp上传
- ftp上传
- ftp上传
- ftp上传
- FTP上传
- ftp上传
- ftp上传
- FTP上传
- FTP上传
- Ftp上传
- FTP上传
- FTP上传
- ftp上传
- ftp上传
- FTP上传
- FTP上传
- JavaScript函数及其参数数组简介
- AMQP-0-9-1中文规范
- Objective-C的runtime原理
- 响应式布局设计
- 【机器学习理论】第6部分 准确率Accuracy,精确度Precision,召回率Recall,F-Score
- ftp上传,加入线程
- usaco2
- Linux学习日志(8)- Linux 编译内核[scripts/kconfig/dochecklxdialog] 错误
- angularjs过滤器(number)
- java实验1-1:求5位数的各位数之和
- JAVA使用Jcrop做图片裁剪上传
- 摄像头采集,264编码,live555直播(1)
- HttpClient +Testng(1)进行接口测试入门
- 转载:白话 IT 之 聊聊数据加密