从单独的Web主机将图像传输到服务器上

时间:2016-03-02 19:50:57

标签: php web ftp server

我让GoDaddy与FTP访问共享网站空间,其中包含带图像的文件夹。这些图像每天都在变化。

我正在寻找建议我需要做些什么才能将这些图像放到工作场所的服务器上,也许每小时左右。服务器没有安装IIS有没有其他方法来做到这一点?

我能做一个PHP脚本,可以使用ip或其他东西将所有图像放到服务器上吗?

3 个答案:

答案 0 :(得分:0)

我会尝试在这里回答,而不是继续发表评论垃圾邮件;)
你的网站空间有FTP访问权限。我们只需将其称为 webspace ;
然后你在你的工作场所得到你的服务器。让我们称之为职场;
毕竟你需要一台服务器(例如也可以是 webspace ),你可以运行PHP。我们称之为 php-server ;

第1步
工作区设置FTP服务器,例如FileZilla。您设置您的FTP服务器,以便您可以连接到它。所以建立一个帐户并进行设置,以便您可以访问要保存图像的文件夹。还要确保您可以从工作场所外部访问 - 防火墙设置等。

第2步
如果您可以在网站空间上运行PHP脚本,这将是最简单的方法。您可以直接访问图像文件,在工作场所建立与FTP服务器的连接并上传文件。
如果PHP服务器在其他地方,则必须建立从 php-server webspace 的连接;将文件下载到 php-server ;将您的文件上传到工作场所的FTP服务器。

你可以看到

将会有一些工作,但应该可以这样做。

答案 1 :(得分:0)

创建一个.bat文件,该文件使用ftp命令行函数将get您想要的数据从服务器中获取。将该.bat文件保存在某处并创建一个计划任务以每小时运行一次脚本。

您甚至可以将ftp命令的实际序列存储在单独的文件中(例如ftpcmd.dat)并从脚本中调用它们

ftp -n -s:ftpcmd.dat SERVERNAME.COM

示例ftp命令文件:

user MyUserName
Password
bin
cd \your\path\images
mget * C:\Temp\
quit

答案 2 :(得分:0)

我有同样的问题,因为我在远程服务器上有两个图像,我需要在每天的预定义时间复制到我的本地服务器,这是我能够提出的代码......

try {
    if(@copy('url/to/source/image.ext', 'local/absolute/path/on/server/' . date("d-m-Y") . ".gif")) {
    } else {
        $errors = error_get_last();
        throw new Exception($errors['type'] . " - " . $errors['message']);
    };
} catch(Exception $e) {
    //An Error Occurred Downloading The Requested Image
    //Place exception handling code here
};

然后我创建了一个每天运行此文件的cron作业,但根据源图像在源服务器上更改的频率,您可以根据需要频繁运行。

解释代码的几点......

  1. 当代码在后台运行时,我使用@符号来隐藏对copy命令发生的任何错误的可视引用,因为无论如何它们都是不可见的。相反,如果复制导致错误,则返回false并触发抛出一个新异常,该异常接收错误类型和错误消息并为其抛出一个新异常,然后可以在catch块中处理,并且可以执行但是您需要进行操作本地日志条目,发送错误电子邮件,无论您需要什么。
  2. 作为复制命令中的第二个参数,您将看到路径导致根据当前日期命名文件名。此名称可以是任何内容,但在目标中必须是唯一的才能使其起作用。如果您计划在每次复制时覆盖图像,那么您可以将名称静态编码为相同的名称,但如果您想维护历史记录,则需要在本地服务器上提供文件命名解决方案以确保每次cron运行时都不会覆盖文件。
  3. 复制语句的第一个参数是在假设源图像文件每次命名相同的情况下编写的,如果名称发生更改,则需要确定命名是如何实现的,并编写变量来构建命名并将其作为源文件名插入。
  4. 此代码不会改变源图像文件的格式,因此确保不会发生损坏,并且在复制后仍然可以显示图像,以确保源图像文件和图像文件的本地副本具有相同的文件扩展名,因此如果源图像文件是.gif文件,则需要确保第二个复制参数中的文件扩展名也设置为.gif