如何更改 PHP 中的文件格式?

How do I Change a File's Format in PHP?

我有一个带有图片库(所有 svg 格式)的网站,希望用户能够将它们下载为 png 格式(将来他们应该可以选择另存为 svg、png、jpg 或pdf,但让我们一次处理一件事)。

我尝试找到 here 的答案。文件下载为 png,但打开时出现错误,指出文件为 damaged/corrupted.

index.html:

<a href="/path/to/file/download.php?http://example.com/uploads/icon-100.svg">
  <button> Download PNG </button>
</a>

download.php:

<?php 
  function replace_extension($filename, $new_extension) {
    $info = pathinfo($filename);
    return $info['filename'] . '.' . $new_extension;
  }

  $url = $_SERVER['QUERY_STRING'];

  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="'.replace_extension( basename($url), 'png').'"'); 
  readfile($url);
?>

我发现的其他答案只解决更改扩展名或重命名文件的问题,而不是更改 format/type。参见 here

如何更改 php 中的文件 format/type?

谢谢!

真的没那么简单。您所做的相当于在您的计算机上将 .svg 文件重命名为 .png,当然这样是行不通的。

可以通过库进行图片转换,比如ImageMagick。同样,您将需要一个不同的库来处理 PDF。