【问题标题】:Add content header to fwrite / fopen / fclose process向 fwrite / fopen / fclose 进程添加内容头
【发布时间】:2013-01-21 07:06:18
【问题描述】:

我正在写入一个 .json 文件,我需要包含标题,这样我就可以毫无问题地访问它。我需要添加到 index.php 文件的标题:

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

创建.json文件的代码sn-p是:

public function saveCalendarAsFile() {
    $file2 = fopen("{$this->name}.txt", 'w');
    fwrite($file2, json_encode($this->events));
    fclose($file2);
}    

public function saveCalendarAsFile() {
    $file2 = fopen("{$this->name}.json", 'w');
    fwrite($file2, json_encode($this->events));
    fclose($file2);
}

无论我将标题放在哪里(在第 1、2 或 3 行之前,正如this post 所建议的那样),它都不会更改外部文件的 HTTP 响应(目前它被列为 text/plain)。

php 文件在文档中具有相同的标题,但根据那里的多个帖子,它需要位于“echo”语句之前。由于我的代码没有使用 echo 语句(因为我正在写入外部文件),所以必须在另一个地方放置标题,这样它就会影响 .json 文件。提前致谢。

【问题讨论】:

  • 您不能将标题写入文件。标头需要由以后通过 HTTP 提供此文件的任何人设置,可能是网络服务器。
  • 有几篇文章说您可以将标题写入文件。示例:stackoverflow.com/questions/398237/how-to-use-the-csv-mime-type。我错过了什么吗?
  • @dbalram 这个问题是将文本输出到浏览器,而不是保存文件。
  • 当前有问题的函数从一个数组中生成多个 .txt 文件。我已经用完整的功能和它当前创建的文件的屏幕截图更新了原始问题。

标签: php json echo mime-types fwrite


【解决方案1】:

在服务器上保存目标文件时无需设置标题,但是,如果您希望能够访问该文件(跨域),则需要设置 Access-Control-Allow-Origin(确切地说当您从服务器请求该文件时)。

在您的情况下:您在服务器上保存了 json 文件 {$this->name}.json,如果您想接收该文件并设置 (Access-Control-Allow-Origin) 那么您需要使用读取该文件PHP然后设置header例如:

考虑文件名是:myjson.json 那么你不能直接请求那个文件,用php读取文件然后输出:

jsonnreador.php
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
echo file_get_contents('myjson.json');
?>

【讨论】:

    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多