我想在客户端计算机上打开服务器存储的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添加为标签,因为这是我的前端,可能有用。
答案 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);
}