Finder上でファイルをドラッグすると、そのドラッグされたファイルをFTPでアップロードするというスクリプトを、よく分からないAppleScriptを書いてみました。初めて書いたAppleScriptです。よくわかってなくてすみません。
AppleScriptでと言いつつ、FTPでアップする部分に関して、面倒くさくなってPHPで書いてしました。そのため、以下の2つのファイルが必要になります。
AppleScriptエディタで、Dropletのテンプレートを作成。以下を記述。
on open names -- OS X Drag and drop tell application "Finder" to set current_dir to parent of (path to me) set current_dir to POSIX path of (current_dir as Unicode text) set my_script to current_dir & "up-sozai2.php" repeat with i in names set i_path to POSIX path of i --UNIX式のパスに変換 set r to do shell script my_script & " " & i_path display dialog "Uploaded" default answer r end repeat quit end open
そして、PHPでFTPアップロードするスクリプト:
file:up-sozai2.php
#!/usr/bin/php <?php date_default_timezone_set('Asia/Tokyo'); $ftp_host = "***.jp"; $ftp_user = "***"; $ftp_pass = "***"; $ftp_dir = "/home/***/www/hoge/"; $httphead = "http://***.jp/hoge/"; // $argc/$argv checker if (count($argv) <= 1) { echo "(USAGE) $ up-sozai.php file1\n"; exit; } $local = $argv[1]; $base = basename($local); $fname = date("YmdHis").rndstr(3)."_".$base; echo "read: $local\n"; # send file $ftp = ftp_connect($ftp_host); if (!$ftp) { echo "error: connect : $ftp_host\n"; exit; } ftp_pasv($ftp, true); if (!ftp_login($ftp, $ftp_user, $ftp_pass)) { echo "error: login error\n"; exit; } if (!ftp_chdir($ftp, $ftp_dir)) { echo "error: chdir : $ftp_dir\n"; exit;; } if (!ftp_put($ftp, $fname, $local, FTP_BINARY)) { echo "error: upload : $local"; exit; } ftp_close($ftp); // echo "{$httphead}{$fname}\r\n"; function rndstr($cnt) { $str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; $s = ""; for ($i = 0; $i < $cnt; $i++) { $r = rand(0, strlen($str)-1); $s .= substr($str, $r, 1); } return $s; }