为什么我的大字节字符串会覆盖文件顶部的文本?

时间:2018-06-07 14:17:09

标签: php

不相关的上下文:基本上运行php脚本将文件从一个db传输到另一个db。

我的代码:

1  $urlVar = "http://www.website.com/api/file_service.php?action=download&companyID=1234&pass=4321&videoID=123456";
2  $file = file_get_contents($urlVar);
3  if ($handle = fopen($urlVar, 'r')) {
4      $stream = stream_get_contents($handle, -1, 0);
5      fclose($handle);
6  }
7
8  $output = date("F j, Y, g:i:s a") . "\n\n";
9  $output .= $urlVar . "\n";
10 $output .= $file . "\n\n\n\n";
11 $output .= $stream . "\n";
12 file_put_contents('file.txt', $output . "\n");

输出(我自己输入了行号。它们实际上并不在文件中):

1     6e65 2037 2c20 3230 3138 2c20 323a 4a75
2     3831 3230 2663 6f6d 7061 6e79 5061 7373
3     3020 2d20 6874 7470 3a2f 2f77 7777 2e76
      ...
43129 0000 0000 0000 0000 002b 696c 7374 0000
43130 0001 0000 0000 4c61 7666 3532 2e39 332e
43131 300a 0a

注意:在文件中,我没有看到任何换行符。我认为4 / n会出现,但他们不会。我的文件是否只变成了十六进制?

如果注释第10行和第11行,则输出:

1 June 7, 2018, 1:56:00 pm
2 
3 http://www.website.com/api/file_service.php?action=download&companyID=1234&pass=4321&videoID=123456

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望使用file_get_contents下载远程输出,然后将其存储在本地文件中? 那就简单了

$urlVar = "http://www.website.com/api/file_service.php?action=download&companyID=1234&pass=4321&videoID=123456";
$file = file_get_contents($urlVar);
//check not FALSE
if ($file) {
    $handle = fopen('localfile.txt', 'w');
    //if you append the date before you will break the file
    //in the case it's not a normal text file you will need when reading
    //a code that skips the first line
    fwrite($handle, date("F j, Y, g:i:s a")."\n\n");
    //better to avoid it and just put the timestamp in db or in filename------
    fwrite($handle, $file);
    fclose($handle);
}

如果file_get_contents失败,那么它是php.ini错误,将allow_url_fopen更改为On