撤消内容配置并将内容输出到服务器上的文件


undo content disposition and output contents to a file on server?

以下代码是来自DOMPDF库的原始代码:它可以处理。ttf字体的子集,我一直试图使这段代码适应我的基本需求,不幸的是,我无法让代码运行,因为我想…我有以下问题可以帮助我继续!

我如何编辑这段代码,使其不会强制下载,而是将其保存到服务器?

我已经尝试了以下方法来禁用强制下载,

禁用标题内容配置不会完全禁用它的动作,它会触发一个新的下载与实际内容的二进制代码,为什么这样做?也许函数readfile()必须对这个问题做一些事情,在我的理解中,它将输出内容到输出缓冲区并显示它。我怎么能防止这样做,并存储它与file_put_contents() ?

if (isset($_POST["subset"])) {  
  $subset = $_POST["subset"];  
  ob_start();
  require_once "../src/FontLib/Autoloader.php";
  $font = Font::load($fontfile);  
  $font->parse();
  $font->setSubset($subset);  
  $font->reduce();
  $new_filename = basename($fontfile);  
  $dot = strpos($new_filename, ".");  
  $new_filename = substr($new_filename, 0, $dot)."-subset".substr($new_filename, $dot);
  header("Content-Type: font/truetype");  
  header("Content-Disposition: attachment; filename='"$new_filename'"");
  $tmp = tempnam(sys_get_temp_dir(), "fnt");  
  $font->open($tmp, Binary_Stream::modeWrite);  
  $font->encode(array("OS/2"));  
  $font->close();
  ob_end_clean();
  readfile($tmp);  
  unlink($tmp);
  return;
}

您应该注意的几件事:

readfile -读取文件并将其写入输出缓冲区。unlink -用于删除文件。

上面的代码创建了一个临时文件,使用readline函数将该文件的内容发送到输出缓冲区,然后在整个文件被缓冲后立即删除该文件。如果不想服务器化该文件,请删除对header、readline和unlink的调用。您想要的文件的路径已经存储在$tmp变量中,因此您可以根据需要对其进行操作。