zoukankan      html  css  js  c++  java
  • Android ftp 上传图片

    1.确定ftp文件夹

    1 /** FTP文件夹 **/
    2     private String ftpPath = "hshscrenncap" + "/" + DateUtils.convertDateToShortString(new Date());

    2.连接服务器

     1   public static FTPClient ftpClient;
     2 
     3     // server:服务器名字
     4     // user:用户名
     5     // password:密码
     6     // path:服务器上的路径
     7     public static boolean connectServer(String ip, String user,
     8             String password) {
     9         if(ip!=null){
    10             ip = ip.trim();
    11         }
    12         if(user!=null){
    13             user = user.trim();
    14         }
    15         if(password!=null){
    16             password = password.trim();
    17         }
    18         boolean is_connected;
    19         try {
    20             ftpClient = new FTPClient();
    21             //连接服务器
    22             try {
    23                 ftpClient.connect(ip);
    24             } catch (UnknownHostException ex) {
    25                 throw new IOException("不能找到FTP服务:" + ip + "'");
    26             }
    27             //在连接尝试检查响应.
    28             int reply = ftpClient.getReplyCode();
    29             if (!FTPReply.isPositiveCompletion(reply)) {
    30                 disconnect();
    31                 throw new IOException("不能连接到服务':" + ip + "'");
    32             }
    33             //登录.
    34             if (!ftpClient.login(user, password)) {
    35                 is_connected = false;
    36                 disconnect();
    37                 throw new IOException("不能登录到FTP服务:'" + ip + "'");
    38             } else {
    39                 is_connected = true;
    40             }
    41             Log.i(Constants.LOG_TAG, "ftp连接成功 result=" + is_connected);
    42         } catch (IOException e) {
    43             Log.i(Constants.LOG_TAG, "连接ftp服务器出错:" + e.getMessage());
    44             is_connected = false;
    45             return is_connected;
    46         }
    47         return is_connected;
    48     }

    3.判断ftp路径是否存在,没有则创建;

     1 /**
     2      * 检查文件夹是否存在
     3      * 
     4      * @param dir
     5      * @param ftpClient
     6      * @return
     7      */
     8     private static Boolean isDirExist(String dir, FTPClient ftpClient) {
     9         try {
    10             return ftpClient.changeWorkingDirectory(dir);
    11         } catch (Exception e) {
    12             e.printStackTrace();
    13             return false;
    14         }
    15     }
     1   /**
     2      * 创建ftp文件
     3      */
     4     public static boolean createFtpFile(String ip,
     5             String userName, String userPassword, String path) {
     6 
     7         if (null != path) {
     8             path = path.trim();
     9         }
    10     
    11         boolean result = connectServer(ip, userName, userPassword);
    12         if (!result) {
    13             return result;
    14         } 
    15         try {
    16             ftpClient.enterLocalPassiveMode();
    17             path = new String(path.getBytes("GBK"), "ISO-8859-1");
    18             //通过远程命令 创建一个文件夹     
    19             if(isDirExist(path, ftpClient)){  
    20                 return true;
    21             }
    22             boolean flag = ftpClient.makeDirectory(path);
    23             if (flag) {
    24                 Log.i(Constants.LOG_TAG, "创建文件 " + path + " 成功!");
    25             } else {
    26                 Log.i(Constants.LOG_TAG, "创建ftp文件失败," + path + " 文件不存在!");
    27             }
    28             return flag;
    29         } catch (UnsupportedEncodingException e) {
    30             Log.i(Constants.LOG_TAG, "创建ftp文件编码出错:" + e.getMessage());
    31             return false;
    32         } catch (IOException e) {
    33             Log.i(Constants.LOG_TAG, "创建ftp文件出错出错:" + e.getMessage());
    34             return false;
    35         } finally {
    36             if (null != ftpClient && ftpClient.isConnected()) {
    37                 try {
    38                     ftpClient.disconnect();
    39                 } catch (Exception e) {
    40                     Log.i(Constants.LOG_TAG, "关闭ftp连接出错:" + e.getMessage());
    41                 }
    42             }
    43         }
    44     }

    上传图片文件:

    /**
    * localFile  本地存储文件夹路径
    * ip  
    * userName  
    * userPassword
    * path  ftp文件夹路径
    **/
    public static String uploadFileByApacheByBinary(String localFile,
                String ip, String userName, String userPassword, String path) {
            String resultMsg = "";
            if (null != ip) {
                path = path.trim();
            }
            //检查是否存在目录
            createFtpFile(Constants.WS_FTP_IP
                    , Constants.WS_FTP_ACCOUNTNAME
                    , Constants.WS_FTP_ACCOUNTPASSWORD, path);
            boolean result = connectServer(ip, userName, userPassword);
            if (!result) {
                resultMsg = Constants.HTTP_INTERVAL_ERROR_STATUS;
                return resultMsg;
            } else {
                ftpClient.setBufferSize(1024);
                //每次数据连接之前,FTP client告诉FTP server开通一个端口来传输数据。
                // Use passive mode to pass firewalls.
                ftpClient.enterLocalPassiveMode();
                FileInputStream fis = null;
                try {
                    File file = new File(localFile);
                    if(!file.exists()){
                        resultMsg = Constants.HTTP_ILLEGAL_ARGUMENT_STATUS;
                        return resultMsg;
                    }
                    fis = new FileInputStream(file);
                    String fileName = file.getName();
                    ftpClient.changeWorkingDirectory(path);
                    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
                    Log.i(Constants.LOG_TAG, "upload--------begin");
                    boolean flag = ftpClient.storeFile(new String(fileName.getBytes("GBK"),
                                    "iso-8859-1"), fis);
                    if (flag) {
                        Log.i(Constants.LOG_TAG, "ftp上传成功!");
                        resultMsg = Constants.HTTP_SUCCESS_STATUS;
                    } else {
                        Log.i(Constants.LOG_TAG, "ftp上传失败!");
                        resultMsg = Constants.HTTP_ERROR_STATUS;
                    }
                    fis.close();
                    return resultMsg;
                }catch (Exception e) {
                    Log.i(Constants.LOG_TAG, "上传ftp文件时出错:" + e.getMessage());
                    resultMsg = Constants.HTTP_INTERVAL_ERROR_STATUS;
                    return resultMsg;
                } finally {
                    if (null != ftpClient && ftpClient.isConnected()) {
                        try {
                            ftpClient.disconnect();
                        } catch (Exception e) {
                            Log.i(Constants.LOG_TAG, "关闭ftp连接出错:" + e.getMessage());
                        }
                    }
                }
            }
        }
  • 相关阅读:
    XSD文件生成C#VO实体类
    WPF根据Oracle数据库的表,生成CS文件小工具
    【求助】WPF 在XP下 有的Textbox光标会消失
    【转】oracle中in和exists的区别
    Spire.DOC生成表格测试
    【转】C#调用Windows图片和传真查看器打开图片
    WPF MVVM下做发送短信小按钮
    SignalR Progress
    C# readonly
    Settings.settings
  • 原文地址:https://www.cnblogs.com/CharlesGrant/p/4747006.html
Copyright © 2011-2022 走看看