读取远程文件数据

课后整理 2021-1-7

本例演示如何在本地读取远程文件的数据,运行结果如图11.16所示。

读取指定文件                        显示文件内容

图11.16 读取远程文件

【操作步骤】

第1步,创建index.php,首先设计网页页面,然后创建一个表单,通过文本框提交要访问的远程文件的地址,最后获取表单中提交的远程文件路径,并通过header()函数跳转到read.php文件中,在该文件中完成对远程文件的读取操作。

<?php
if(isset($_POST ['files'])  &&  $_POST  ['files']!=""){
    $filenames=urlencode($_POST ['files']);
    header("Location:  read.php?filename=$filenames");
}
?>
<!doctype html> <html> <head> <meta charset="utf-8"> </head> <body> <h2>访问远程文件</h2> <form name="form1" method="post" action="index.php">     <p>远程文件地址:<input name="files" type="text" id="files" size="40">         <br>         (路径、文件名称必须是英文字符串)</p>     <p>         <input type="submit" value="提 交">     </p> </form> </body> </html>

第2步,创建read.php文件,获取header()函数传递的参数值,应用file()函数读取参数值中传递的远程文件,并通过foreach语句输出远程文件的内容。

<?php

$filename = $_GET['filename'];

$arr = file ( $filename) ; //读取远程文件的内容 foreach ( $arr as $value ) { //循环输出数据     echo htmlspecialchars ( $value )."<br>"; } ?>

file()函数能够把整个文件读入一个数组中,其语法如下所示:

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

参数说明如下:

另外,使用file_get_contents()函数可以将整个文件读入一个字符串。其语法如下所示:

string file_get_contents (  string $filename [, bool $use_include_path = false [, resource $context [, int  $offset = -1 [, int $maxlen ]]]] )

参数说明如下:

【提示】

如果要访问远程文件,必须将配置文件php.ini中的参教allow_url_ fopen设置为开启。allow_url_ fopen参数默认是开启的,允许打开HTTP协议和FTP协议指定的远程文件,如果allow_url_ fopen设置off,则不允许打开远程文件,函数将返回FALSE。

严格地说,远程文件的访问功能有时是不被支持的,因为它涉及服务器中文件的安全问题,所以在多数的服务器中,allow_url_ fopen的值都是关闭的。