【问题标题】:Download pdf files with the label name shown in webpage下载带有网页中显示的标签名称的 pdf 文件
【发布时间】:2021-08-09 08:41:59
【问题描述】:

我的问题有点棘手,我目前没有可显示的解决方案或代码。 我的本地网页上列出了 500 多个 pdf 文件。如下所示。

<a href="123.pdf">Car List</a>
<a href="456.pdf">Bike List</a>
<a href="789.pdf">Ship List</a>

现在像往常一样在网页中它们会显示类似的链接

汽车清单

自行车清单

船舶清单

现在我想下载所有带有标签名称的 pdf 文件。我希望像 Car List.pdf 而不是 123.pdf 那样下载文件。现在文件已经超过500了,所以手动操作是不行的。

我的网页是 php。有什么想法或脚本可以做到这一点?

【问题讨论】:

  • 了解您正在使用哪个网络服务器、在哪个平台上可能会很有用。

标签: php file web-scraping web-crawler


【解决方案1】:

您可以使用标题来重命名输出。比如这样:

<?php

$InputName = $_GET['Input'];
$outputName = $_GET['Output'];

header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="'.$outputName.'"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');

readfile('<...path to pdf files...>'.$InputName);

然后您可以使用这些类型的链接:

<a href="openPdf.php?Input=123.pdf&Output=Car%20List.pdf">Car List</a>

请注意,Content-Disposition: inline; 将在您的浏览器中打开文件,而Content-Disposition: attachment; 将充当下载文件。

如果您希望您的链接只包含“真实”文件名,您可能需要对您的网络服务器进行配置。

【讨论】:

  • 它会自动下载所有文件吗.. 或者我必须点击保存或任何保存按钮来保存所有 500 个文件?
  • @Koushik 啊,我错过了你的问题,你想自动下载所有文件。这可以用一点 JavaScript 来完成。例如:How trigger file downloads with JavaScript。您可以在 PHP 脚本中编写 500 次下载,从而生成正确的 JavaScript 代码。
  • 请记住,500 个文件很多。您可以为自己创建这样的脚本,但不要让其他无辜的人使用它。他们不会知道是什么击中了他们。
【解决方案2】:
  1. 编写download.php以输出所需名称的pdf。
<?php
header("Content-type:application/pdf");

// $_GET['FileName'] is the "Cat List.pdf"
header('Content-Disposition: attachment; filename="' . $_GET['FileName'] . '.pdf"');

// $_GET['File'] is the "123.pdf"
readfile($_GET['File']);
?>
  1. 用 IDE 的文本替换功能将所有 &lt;a href="123.pdf"&gt;Car List&lt;/a&gt; 替换为 &lt;a href="download.php?File=123.pdf&amp;FileName=Car%20List&gt;Car List&lt;/a&gt;

【讨论】:

  • 我必须再次单击或保存对话框中的按钮.. 对于所有 500 个文件..
  • 是否可以通过 FTP 重命名和下载它们?如果是这样,您可以通过重命名文件来存档...。对于 Linux:在网页上,将每一行更改为 mv 123.pdf 'Cat List.pdf' 之类的格式。然后复制所有行并在终端中运行它们对于 Windows:在网页上,将每一行更改为ren "123.pdf" "Cat List.pdf" 之类的格式。然后复制所有行并在cmd中运行
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 2019-02-24
  • 2019-12-27
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
相关资源
最近更新 更多