对于您要解决的问题,最常见的解决方案是运行一个应用程序,使您的 Web 服务器看起来像是一个已安装的 Mac 磁盘。Transmit 4 具有该功能,Panic 将其称为“传输磁盘”。但还有其他一些应用程序——Transmit 不是第一个。
您的 Mac 应用程序(和 AppleScripts)只看到一个典型的 Mac 磁盘,它们可以将文件保存到该磁盘并从中读取文件(最基本的基本 AppleScript 任务),而 Transmit Disk(或类似的应用程序)透明地镜像该 Mac 磁盘的任何更改在后台发送到您的 Web 服务器。这使得所有网络和 FTP 的东西完全消失,让您编写非常简单的脚本来为您的 Web 服务器做非常强大的事情。您将 HTML 文档保存在那里,您将图像和电影文件导出到那里,就像您将它们保存在您的桌面上一样容易,而且它们会立即发布到您的 Web 服务器。即使是仅有的几乎无法编写脚本的应用程序也可以将其文件保存到特定磁盘上。
例如,如果我在 BBEdit 中打开了一个 HTML 文档,并且我想将该文档的副本保存到我的 Web 服务器,它只需要几行代码,这在任何支持 AppleScript 的文本编辑器中都可能是相似的(这脚本也可以在免费的 TextWrangler 中逐字运行):
tell application "BBEdit"
set theHTMLSource to the contents of text window 1
make new document with properties {text:theHTMLSource}
save document 1 to file "Transmit Disk:index.html"
close document 1 saving no
end tell
请注意,上面的 AppleScript 不仅不需要了解有关 SFTP 的任何信息或具有任何登录凭据,它甚至不需要弄清楚我当前文档的文件路径,因为它只是将内容直接从当前窗口中取出. 没有 POSIX 路径名,没有 shell 脚本,根本没有猴子业务。而且因为这个任务和代码非常简单,你可以想象你可以为你可能使用的 20 个不同的应用程序重写这个脚本 20 次,这样他们都可以将他们当前文档的副本保存到你的传输磁盘上,从而将该文档发布到您的网络服务器。
如果我有一个包含该 HTML 文档的图像文件夹,我可以要求 Finder 将该文件夹复制到我的传输磁盘上以发布它。只需一行代码:
tell application "Finder"
duplicate folder "images" of (the path to the desktop folder as alias) to the disk "Transmit Disk" replacing no
end tell
…但这些图像也可以通过 AppleScript 从 Photoshop 或任何应用程序中直接导出到传输磁盘。
简而言之,所有 Mac 应用程序的共同点是它们都可以将文件保存到 Mac 磁盘。他们不一定都给你他们打开的文档的路径名,或者用 Transmit 打开这些文件。Mac 应用程序和 AppleScript 主要设计用于处理从本地磁盘保存或打开的文件。因此,如果您使用 Transmit Disk 之类的东西来使您的 Web 服务器基本上成为 AppleScript 派对的一部分,那么您将获得很多收益,因为它看起来只是一个普通的旧 Mac 磁盘。