gpt4 book ai didi

post - PHP : upload file from one server to another server

转载 作者:行者123 更新时间:2023-12-04 04:47:05 24 4
gpt4 key购买 nike

我正在服务器中开发一个网站,而存储在另一台服务器中,我必须以某种方式处理它。我很紧张地经历了这种情况,我发现解决方案是使用 curl。

请从零开始详细解释如何使用 Curl。

更新:

我使用以下代码来测试是否安装并启用了 cURL:

<?PHP
phpinfo();

$toCheckURL = "http://board/accSystem/webroot/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $toCheckURL);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
$data = curl_exec($ch);
curl_close($ch);
preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);
$code = end($matches[1]);
if(!$data) {
echo "Domain could not be found";
} else {
switch($code) {
case '200':
echo "Page Found";
break;
case '401':
echo "Unauthorized";
break;
case '403':
echo "Forbidden";
break;
case '404':
echo "Page Not Found";
break;
case '500':
echo "Internal Server Error";
break;
}
}
?>

结果如下:
enter image description here

我收到了(找到页面)消息

现在我可以放心地使用 cURL 了,对吧?

笔记:
两台服务器都是本地的

最佳答案

作为一名 PHP 开发人员,您可能已经熟悉 PHP 最方便的文件系统函数 fopen。该函数打开一个文件流并返回一个资源,然后可以将其传递给 fread 或 fwrite 以读取或写入数据。有些人没有意识到文件资源不一定要指向本地机器上的某个位置。

这是一个将文件从本地服务器传输到 ftp 服务器的示例:

$file = "filename.jpg";
$dest = fopen("ftp://username:password@example.com/" . $file, "wb");
$src = file_get_contents($file);
fwrite($dest, $src, strlen($src));
fclose($dest);

可以在 PHP 手册的附录 M 中找到受支持的不同协议(protocol)的列表。您可能希望使用采用某种加密机制(如 FTPS 或 SSH)的协议(protocol),具体取决于网络设置和您要移动的信息的敏感性。

curl 扩展使用客户端 URL 库 (libcurl) 来传输文件。实现 curl 解决方案的逻辑一般如下:首先初始化 session ,设置所需的传输选项,执行传输,然后关闭 session 。

使用 curl_init 函数初始化 curl session 。该函数返回可以与其他 curl 函数一起使用的资源,就像在文件系统函数中使用 fopen 获取资源的方式一样。

使用 curl_setopt 设置传输 session 的上传目标和其他方面,该资源采用 curl 资源、一个表示设置和选项值的预定义常量。

下面是一个使用 HTTP 协议(protocol)的 PUT 方法将文件从本地主机传输到远程服务器的示例:
$file = "testfile.txt";

$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://example.com/putscript");
curl_setopt($c, CURLOPT_USERPWD, "username:password");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_PUT, true);
curl_setopt($c, CURLOPT_INFILESIZE, filesize($file));

$fp = fopen($file, "r");
curl_setopt($c, CURLOPT_INFILE, $fp);

curl_exec($c);

curl_close($c);
fclose($fp);

curl 的有效选项列表可以在 php 文档中找到。

ftp 扩展允许您实现对 ftp 服务器的客户端访问。当前两个选项可用时,使用 ftp 传输文件可能是矫枉过正……理想情况下,最好使用此扩展,需要更高级的功能。

使用 ftp_connect 与 ftp 服务器建立连接。您使用 ftp_login 通过提供用户名和密码来验证与 ftp 服务器的 session 。使用 ftp_put 函数将该文件放置在远程服务器上。它接受目标文件名、本地源文件名和预定义的常量来指定传输模式:FTP_ASCII 用于纯文本传输或 FTP_BINARY 用于二进制传输。传输完成后,使用 ftp_close 释放资源并终止 ftp session 。
$ftp = ftp_connect("ftp.example.com");
ftp_login($ftp, "username", "password");
ftp_put($ftp, "destfile.zip", "srcfile.zip", FTP_BINARY);
ftp_close($ftp);

关于post - PHP : upload file from one server to another server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35311051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com