如何使用PHP更改文件的Title属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP更改文件的Title属性相关的知识,希望对你有一定的参考价值。

用户使用我的php应用程序上传PDF文件,然后将它们存储在S3上。稍后其他用户查看文件,我在浏览器中显示“内联”。

问题是PDF的“标题”属性显示在浏览器选项卡中,通常会显示网站标题。由于它是由执行原始上传的用户设置的,因此它是任意的,因此我需要更改它。我该怎么做呢?

我认为Title是文件的扩展属性,但是安装了Ubuntu的xattr,当我在文件上运行它时,它什么也没有返回,所以也许我错了。

当我在S3上查看对象元数据时,没有提到Title属性,因此我不知道它在S3上的存储位置和方式。

我的偏好是使用OS调用重写Title属性,而不是安装另一个PHP扩展(例如xattr)。

编辑:这是返回响应的Laravel控制器方法

public function displayFile($id)
{
    $headers = ['Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline'];
    return response(Storage::disk('private')->get("files/{$id}.pdf"), 200, $headers);
}
答案

当你说'内联'时,你究竟是什么意思?您所描述的内容似乎更像是将它们指向文档URL。在这种情况下,标题将是PDF中包含的标题,只有一些PDF编辑器可以更改。我知道没有一个不会破坏文件(特别是那些具有交互式内容的文件)对于PHP来说很糟糕。如果您有权访问本机应用程序,可以尝试使用exiftool:https://askubuntu.com/questions/27381/how-to-edit-pdf-metadata-from-command-line

您可能想要做的是将文档显示在html文件中,如下所示:https://www.w3docs.com/snippets/html/how-to-embed-pdf-in-html.html注意:对各种浏览器进行大量测试,尤其是移动设备; PDF嵌入在移动浏览器中是众所周知的古怪。

另一答案

您应该可以向Content-Disposition 添加任意文件名以进行内联查看,就像您下载时一样。尝试这样的事情:

$headers = ['Content-Type' => 'application/pdf', 'Content-Disposition' => 'inline; filename="WhateverYouWantTheUsersToSee"'];

(实际上不知道是否需要转义那些引号;如果没有,请取出反斜杠。)

以上是关于如何使用PHP更改文件的Title属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vs Code 中更改默认自动选择的用户片段行为

满足条件后如何更改 CSS 样式属性? PHP、JS、CSS

在创建VSCode片段时,如何将变量转换为title-case(如TitleCase)?

如何更改 XML 属性

php 在Yoast SEO中更改或删除OpenGraph输出的代码片段。此代码中有多个代码段。

如何删除 Jquery PHP 回显错误? [关闭]