在服务器上存储的客户端上打开文件

时间:2018-03-27 10:54:21

标签: php reactjs

我想在客户端计算机上打开服务器存储的html报告文件。

我想带回该文件夹中所有已保存报告的列表(scandir)。 这样,用户可以单击任何已打包的报告来打开它们。

所以你点击一个报告打开它,你需要可以打开报告的位置

这是我的困境。我不知道如何获得客户端可以理解的合适的IP,端口和文件夹位置

以下是我一直在试验的内容。

使用这个显然不会起作用: $path = $_SERVER['DOCUMENT_ROOT']."/reports/saved_reports/";

所以我可能会试试这个。

    $host= gethostname();
    $ip = gethostbyname($host);
    $ip = $ip.':'.$_SERVER['SERVER_PORT'];
    $path    = $ip."/reports/saved_reports/";
    $files = scandir($path);

在上面的代码之后,我遍历每个文件并生成一个名称,创建日期和路径的数组。将其发回以生成用户可与之交互的表中的报告列表。 (打开,删除,编辑)

但这也失败了。

所以我对如何处理这个问题一点也毫无瑕疵。

PS。我将react.js添加为标签,因为这是我的前端,可能有用。

2 个答案:

答案 0 :(得分:0)

您的问题可能会在此部分回答:https://stackoverflow.com/a/11970479/2781096

从指定路径获取文件名,然后再次点击curl或get_text()函数保存文件。

function get_text($filename) {

    $fp_load = fopen("$filename", "rb");

    if ( $fp_load ) {

            while ( !feof($fp_load) ) {
                $content .= fgets($fp_load, 8192);
            }

            fclose($fp_load);

            return $content;

    }
}


$matches = array();
// This will give you names of all the files available on the specified path.
preg_match_all("/(a href\=\")([^\?\"]*)(\")/i", get_text($ip."/reports/saved_reports/"), $matches);

foreach($matches[2] as $match) {
    echo $match . '<br>';
    // Again hit a cURL to download each of the reports.
}

答案 1 :(得分:0)

获取报告列表:

<?php
$path    = $_SERVER['DOCUMENT_ROOT']."/reports/saved_reports/";


$files = scandir($path);



foreach($files as $file){
    if($file !== '.' && $file != '..'){
        echo "<a href='show-report.php?name=".$file. "'>$file</a><br/>";
    }
}


?>

并编写第二个用于显示html报告的php文件,该文件接收文件名作为GET参数并回显给定html报告的内容。

显示-report.php

<?php

$path    = $_SERVER['DOCUMENT_ROOT']."/reports/saved_reports/";

if(isset($_GET['name'])){
    $name = $_GET['name'];

    echo file_get_contents($path.$name);

}