2012年6月7日木曜日

FTPファイル送信




FTPファイル送信サンプル

変数定義

    String sHost = "192.168.11.27"; //ftp server IP
    String sUser = "user";              //ユーザ名
    String sPass = "pass";             //パスワード
    String sRemotePath = "/";       //サーバーパス
    FTPClient ftpCli;



転送ファイル指定、送信

    FTPFile ftpFile = new FTPFile();
    ftpFile.setName("ファイル名");
    uploadFTP(ftpFile);




送信ルーチン

    //FTP送信
private void uploadFTP(FTPFile ftpFile) {
//3.1からこれを入れないとエラー(android.os.NetworkOnMainThread Exception)
   StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());

   int    nPort = 21;
   int    nTimeout = 100*1000;

   try {

           ftpCli = new FTPClient();
           // タイムアウト設定
           ftpCli.setDefaultTimeout(nTimeout);
           // 接続
           ftpCli.connect(sHost,nPort);
           if (FTPReply.isPositiveCompletion(ftpCli.getReplyCode()) == false) {
               // 接続エラー
               throw new Exception(
                       new StringBuffer("FTP接続エラー Code=")
                       .append(ftpCli.getReplyCode())
                       .toString()
               );
           }

           // ソケットタイムアウト設定
           ftpCli.setSoTimeout(nTimeout);

           // ログイン
           if (ftpCli.login(sUser, sPass) == false) {
               // 認証エラー
               throw new Exception(
                       new StringBuffer("FTP認証エラー Code=")
                       .append(ftpCli.getReplyCode())
                       .toString()
               );
           }

           // ファイル転送モード設定
           ftpCli.setFileType(FTP.ASCII_FILE_TYPE);
           ftpCli.enterLocalPassiveMode();
           ftpCli.setDataTimeout(nTimeout); // タイムアウト設定

           // ディレクトリ移動
           if (ftpCli.changeWorkingDirectory(sRemotePath) == false) {
               throw new Exception(
                       new StringBuffer("Failed changeWorkingDirectory() ")
                       .append(sRemotePath)
                       .append(" Code=")
                       .append(ftpCli.getReplyCode())
                       .toString()
               );
           }

           // アップロード

           FileInputStream fos = openFileInput(ftpFile.getName());
           ftpCli.storeFile(ftpFile.getName(), fos);
           fos.close();
       
           // 完了処理
           ftpCli.disconnect();

       } catch (SocketException e) {
        showDialog(Activity.this,"sエラー",e.toString());
       } catch (IOException e) {
        showDialog(Activity.this,"iエラー",e.toString());
       } catch (Exception e) {
        showDialog(Activity.this,"eエラー",e.toString());      
           }
}
 
//ダイアログの表示
    private static void showDialog(Context context,String title,String text) {
        AlertDialog.Builder ad=new AlertDialog.Builder(context);
        ad.setTitle(title);
        ad.setMessage(text);
        ad.setPositiveButton("OK",null);
        ad.show();
    }






受信(Download)は、


                FileOutputStream fos = openFileOutput(
                        ftpFile.getName(),
                        Context.MODE_WORLD_READABLE |
                        Context.MODE_WORLD_WRITEABLE);
                ftpCli.retrieveFile(ftpFile.getName(), fos);
                fos.close();

0 件のコメント:

コメントを投稿