2012-01-27 88 views
-1

我想通过php将文件从远程服务器复制到本地服务器。我不确定这样做的“最佳”方法,所以我尝试了几种不同的方法来实现这一点,但是我正在用这些方法解决障碍。 (A)调用远程服务器并获取.php文件的内容并将其传递回本地服务器,以便(B)调用本地脚本本地php脚本并使用file_put_contents将内容写入本地服务器。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 &copy; - Example description of example site</title>' 
        . '<style type="text/css">' 

所以,如果你看一下回来的代码......有一个“&复制”,这需要存在于在页面上显示的版权符号...但它从写停止file_put_contents文件的其余部分。

+2

也许向我们展示一些代码.. – cambraca 2012-01-27 19:45:19

+0

因为我现在的代码是一团糟尝试不同的事情。会导致比任何事情更混乱。 – 2012-01-27 19:51:07

+0

然后先修复你的代码,我们不是在这里通过广泛猜测来清理你的垃圾。 – hakre 2012-01-28 19:49:14

回答

0

复制从以前的答复回答我自己的问题。

下面是问题的答案。 :)知道这将是简单的事情,我还没有跑过。在将数据发送到本地写脚本之前(在从远程接收它之后),我只需将encodeURIComponent()调用到我返回的响应并将其发送到本地脚本进行写入。

工程就像一个魅力。

3

听起来像你需要用htmlspecialchars()对远程服务器上的文件进行编码,并在本地端使用htmlspecialchars_decode()接收它时对其进行解码。

一个更好的选择可能是base64_encode()远程服务器上的文件,然而bas64_decode()它在本地接收服务器上。

+0

这不是数据传输问题......这是我从远程服务器收到数据后的实际写入。返回的数据是PERFECT ...然后我将这些数据写入本地副本,但是当达到&符号时...它会停止进一步写入file_put_contents。 返回的脚本数据的一部分包含版权的html代码,并且在达到“©”时,它会停止写入。 – 2012-01-27 20:16:52

+0

@Lostinthesauce您应该在十六进制编辑器中查看源代码或查找可能跳过文件的非打印字符:/ – 2012-01-27 20:25:30

+0

file_put_contents('testing.php','<?php echo“Testing this function ©”?>'); 那么..我测试了这个,而不是内容回来......这实际上是写入文件。我很困惑。 – 2012-01-27 20:40:18

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两岸如果你能。您的服务器将具有已知良好的互联网连接,但用户可能有不良的互联网连接,并且您要求用户下载和上传信息。

+0

Php无法检查远程服务器对本地服务器,看看这两个脚本是否匹配或不' t匹配。据我所知,唯一的方法就是让JSONP调用REMOTE服务器(在进程中传递本地文件哈希),并根据LOCAL哈希检查REMOTE哈希。如果它们不匹配...将REMOTE文件的内容传递给我,以便我可以将内容写入本地文件。 – 2012-01-27 20:08:40

+0

PHP可以获取远程文档的内容,关于'file_get_contents()'的PHP文档的第一个示例是如何获得“网站主页的源代码”(它使用'http://'协议): http://php.net/file_get_contents。我不是故意在这里争论,我只是想知道'file_get_contents()'表现出什么样的行为,不会做你想做的事情。我相信它在远程服务器解析了它的服务器端代码之后给出输出,是否需要远程服务器上的实际PHP代码? – Jasper 2012-01-27 20:20:25

+0

我不认为你是在争论......我很欣赏任何投入,因为这对我来说也有点混乱。我没有试图获得页面的“最终结果”......我试图获得.php文件本身的“精确编码”。实现这一目标的方法是(1)首先找出文件是否不同(2)获取远程文件的内容(3)将内容写入本地文件。由于远程文件使用方法来确保只有本地服务器正在调用它..我必须调用该服务器上的脚本来获取信息等然后发回给我。 – 2012-01-27 20:22:08