Q: Как передать обратно содержимое более чем одного файла пользователю без необходимости создавать отдельные конечные точки.
A: Есть несколько способов сделать это.
Если содержимое каждого файла невелико, то самый простой выход - прочитать все содержимое и затем передать его обратно как объект значения ключа javascript
. Например,
let data = {
file1: "This is some text from file 1",
file2: "Text for second file"
}
res.send(data);
res.end();
Если содержимое особенно велико, вы можете передавать данные клиенту, при этом вы можете добавить некоторые метаданные или hints
, чтобы сообщить клиенту, что они собираются получить в следующий момент, и когда конец файла.
Вероятно, есть некоторые библиотеки, которые могут сделать последнее для вас, поэтому я бы посоветовал вам сделать покупки в github
, прежде чем разрабатывать / писать свои собственные.
Первый метод является самым простым.
Либо var_export
либо установите print_r
для возврата вывода вместо его печати.
$b = array (
'm' => 'monkey',
'foo' => 'bar',
'x' => array ('x', 'y', 'z'));
$results = print_r($b, true); // $results now contains output from print_r
Затем вы можете сохранить $results
с помощью file_put_contents
. Или вернуть его непосредственно при записи в файл:
file_put_contents('filename.txt', print_r($b, true));
<час> test.php
<?php
return [
'my_key_1'=>'1111111',
'my_key_2'=>'2222222',
];
index.php
// Read array from file
$my_arr = include './test.php';
$my_arr["my_key_1"] = "3333333";
echo write_arr_to_file($my_arr, "./test.php");
/**
* @param array $arr <p>array</p>
* @param string $path <p>path to file</p>
* example :: "./test.php"
* @return bool <b>FALSE</b> occurred error
* more info: about "file_put_contents" https://www.php.net/manual/ru/function.file-put-contents.php
**/
function write_arr_to_file($arr, $path){
$data = "\n";
foreach ($arr as $key => $value) {
$data = $data." '".$key."'=>'".$value."',\n";
}
return file_put_contents($path, "<?php \nreturn [".$data."];");
}
file_put_contents ($ file, print_r ($ array, true), FILE_APPEND)
Вы можете попробовать:
$h = fopen('filename.txt', 'r+');
fwrite($h, var_export($your_array, true));
Просто используйте print_r
; ) Прочитайте документацию:
Если вы хотите захватить вывод
print_r()
, используйте параметрreturn
. Когда этот параметр установлен вTRUE
,print_r()
будет возвращать информацию, а не печатать ее.
Так что это одна из возможностей:
$fp = fopen('file.txt', 'w');
fwrite($fp, print_r($array, TRUE));
fclose($fp);