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();
}
0 件のコメント:
コメントを投稿