Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从单独的web主机将图像获取到服务器上_Php_Web_Ftp_Server - Fatal编程技术网

Php 从单独的web主机将图像获取到服务器上

Php 从单独的web主机将图像获取到服务器上,php,web,ftp,server,Php,Web,Ftp,Server,我有一个具有FTP访问权限的GoDaddy共享Web空间,其中包含一个包含图像的文件夹。这些图像每天都在变化 我在寻找关于我需要做些什么才能将这些图片上传到工作场所的服务器上的建议,可能每小时左右一次。服务器没有安装IIS。还有其他方法吗 我能用PHP脚本将所有图像通过ip或其他方式放到服务器上吗?我将尝试在这里回答,而不是继续垃圾评论;) 您的Web空间具有FTP访问权限。我们就叫它网络空间 然后你在工作场所安装了服务器。让我们称之为工作场所 毕竟,您需要一台服务器(例如,也可以是webspa

我有一个具有FTP访问权限的GoDaddy共享Web空间,其中包含一个包含图像的文件夹。这些图像每天都在变化

我在寻找关于我需要做些什么才能将这些图片上传到工作场所的服务器上的建议,可能每小时左右一次。服务器没有安装IIS。还有其他方法吗


我能用PHP脚本将所有图像通过ip或其他方式放到服务器上吗?

我将尝试在这里回答,而不是继续垃圾评论;)
您的Web空间具有FTP访问权限。我们就叫它网络空间
然后你在工作场所安装了服务器。让我们称之为工作场所
毕竟,您需要一台服务器(例如,也可以是webspace),在那里您可以运行
PHP
。让我们称之为php服务器

步骤1
工作区设置FTP服务器,例如
FileZilla
。您可以设置FTP服务器,以便连接到它。因此,请创建一个帐户并进行设置,以便您可以访问要保存图像的文件夹。还要确保你能从工作场所之外获得访问权——防火墙设置等

步骤2
如果您可以在Web空间上运行PHP脚本,这将是最简单的方法。您可以直接访问图像文件,在workplace建立与FTP服务器的连接,然后上载文件。
如果PHP服务器在其他地方,则必须建立从PHP服务器到Web空间的连接;将您的文件下载到php服务器;将文件上载到工作区的FTP服务器上


正如您所见,这将是一项工作,但应该是可以做到的。

创建一个.bat文件,该文件使用ftp命令行函数
从服务器获取所需的数据。将该.bat文件保存到某个位置,并创建一个计划任务,以便每小时运行脚本

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

ftp -n -s:ftpcmd.dat SERVERNAME.COM
ftp命令文件示例:

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

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

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作业,它每天运行这个文件,但您可以根据源服务器上源映像更改的频率,根据需要随时运行

解释代码的几点

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

  • 嗯,是的。如果你知道一些很棒的搜索网站,你会立即发现PHP集成了各种FTP功能。接收文件的服务器没有IIS,而是windows。我想更多的是一个bat文件来使用windows集成ftp?为什么你认为你需要IIS来使用ftp?查看这里的FileZilla服务器:例如,我说的是每小时做一次,而不是手动。这里相同。当然,您可以编写一个PHP脚本来实现这一点。我以为你在一台机器上丢失了一个FTP。。那么你的问题是什么?这是不必要的复杂。您不应该只为了在本地推送文件而在目标计算机上安装FTP服务器。更不用说工作场所的机器可能在防火墙后面,打开端口和托管FTP服务与只与Web空间建立传出FTP连接会有问题。拉式设计比推式设计能更好地解决这个问题。有没有一种方法可以将打开的文件夹作为zip文件?基本上,我不会有一个绝对的路径,我可能需要拿起一对夫妇的文件夹与40-50图像在每天如果你能澄清你的意思请。你是说在远程服务器上获取一个现有文件夹,压缩它,下载它,然后提取图像吗?