我想通过php将文件从远程服务器复制到本地服务器。我不确定这样做的“最佳”方法,所以我尝试了几种不同的方法来实现这一点,但我正在用这些方法遇到障碍。
所以我想出了一个使用JSONP的方法来(A)调用远程服务器并获取.php文件的内容并将其传递回本地服务器以获取本地脚本然后(B)调用本地脚本php脚本并使用file_put_contents将内容写入本地服务器。
所有工作都很好直到达到&符号。文件写在那里停止。
编辑以显示返回的数据。
if ($mysqlErrorConnectServer || $mysqlErrorConnectDb || $mysqlErrorConfigTableMissing) {
$errorMsg .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'
. '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
. '<head>'
. '<title>Example website © - Example description of example site</title>'
. '<style type="text/css">'
因此,如果您查看后面的代码...有一个“&amp; copy”需要在那里显示页面上的版权符号...但它会阻止file_put_contents编写其余的文件。
答案 0 :(得分:3)
听起来您需要使用htmlspecialchars()
对远程服务器上的文件进行编码,并在使用htmlspecialchars_decode()
在本地端接收文件时对其进行解码。
更好的替代方案可能是base64_encode()
远程服务器上的文件,而bas64_decode()
位于本地接收服务器上。
答案 1 :(得分:0)
为什么不直接使用PHP?
<?php
$file_contents = file_get_contents('http://www.google.com/');
$handle = fopen('new-file.html', 'w');
frwite($handle, $file_contents, strlen($file_contents));
fclose($handle);
?>
file_get_contents()
的文档:http://php.net/file_get_contents
你使用AJAX的方式是另一种数据传输方式,如果可以,你应该从PHP中获取它。您的服务器将具有已知良好的互联网连接,但是用户可能连接不良,并且您要求用户下载和上传信息。
答案 2 :(得分:0)
从之前的回复中复制回答我自己的问题。
这是问题的答案。 :)知道这将是一个简单的我还没有跑过来。在将数据发送到本地写脚本之前(从远程接收回来之后),我只需将encodeURIComponent()调用到我返回的响应中,然后将其发送到本地脚本进行写入。
像魅力一样。