分かりやすく、使いやすく。

FTP でファイルをアップロードする方法

スポンサーリンク

PowerShell では WebClient を使用することで、簡単に FTP でファイルをアップロードすることができます。

  1. ファイルを 1 個アップロードする方法
  2. ファイルを 1 個リネームしてアップロードする方法
  3. 指定したフォルダ内のファイルを全てアップロードする


ファイルを 1 個アップロードする方法

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# FTP接続に必要な情報を設定
$user     = 'your_account';
$pass     = 'your_password';
$hostName = 'your.host.jp';
 
# ダウンロード元(local)のパスとダウンロード先(server)のパスを設定
$localFilePath = 'C:\temp\test.txt';
$serverFilePath = '/bayashita.com/test.txt';
 
# FTP接続用のURL
$ftpUrl = 'ftp://' + $hostName + '/';
 
# 接続
$webClient = New-Object System.Net.WebClient;
$webClient.Credentials = New-Object System.Net.NetworkCredential($user,$pass);
$webClient.BaseAddress = $ftpUrl;
 
# アップロード
$webClient.UploadFile($serverFilePath , $localFilePath);
 
$webClient.Dispose(); 

ファイルを 1 個リネームしてアップロードする方法

ファイル名を変更してアップロードする場合は、 UploadFile メソッド実行時にサーバ側のファイル名を変更します。次のサンプルコードでは、 $localFilePath と $serverFilePath で異なるファイル名を指定することで、 test.txt から abcdef.txt にファイル名を変更しています。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# FTP接続に必要な情報を設定
$user     = 'your_account';
$pass     = 'your_password';
$hostName = 'your.host.jp';
 
# ダウンロード元(local)のパスとダウンロード先(server)のパスを設定
# test.txt は abcdef.txt にリネームしてアップロードされる。
$localFilePath = 'C:\temp\test.txt';
$serverFilePath = '/bayashita.com/abcdef.txt';
 
# FTP接続用のURL
$ftpUrl = 'ftp://' + $hostName + '/';
 
# 接続
$webClient = New-Object System.Net.WebClient;
$webClient.Credentials = New-Object System.Net.NetworkCredential($user,$pass);
$webClient.BaseAddress = $ftpUrl;
 
# アップロード
$webClient.UploadFile($serverFilePath , $localFilePath);
 
$webClient.Dispose(); 

指定したフォルダ内のファイルを全てアップロードする

指定したフォルダ内に含まれる全てのファイルをアップロードするサンプルコードです。指定したフォルダ内にフォルダが含まれる場合、そのフォルダは無視します。(再帰的にアップロードは行いません。)

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# FTP接続に必要な情報を設定
$user     = 'your_account';
$pass     = 'your_password';
$hostName = 'your.host.jp';
 
# ダウンロード元(local)のパスとダウンロード先(server)のパスを設定
# この例では C:\temp\uploadFiles 内のファイルを全てアップロード
$localDirectoryPath = 'C:\temp\uploadFiles';
$serverDirectoryPath = '/bayashita.com/uploadFiles';
 
# FTP接続用のURL
$ftpUrl = 'ftp://' + $hostName + '/';
 
# 接続
$webClient = New-Object System.Net.WebClient;
$webClient.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$webClient.BaseAddress = $ftpUrl;
 
foreach($item in (Get-ChildItem $localDirectoryPath))
{
    # フォルダ(PSIsContainerがtrue)の場合はアップロードしない。
    if(!$item.PSIsContainer)
    {
        # アップロード
        $serverPath = $serverDirectoryPath + '/' + $item.Name;
        $webClient.UploadFile($serverPath , $item.FullName);
    }
}
 
$webClient.Dispose(); 
スポンサーリンク
スポンサーリンク