文件模块概述

最后更新于 
2016 年 11 月 28 日

如果您有适当的权限,文件模块使您能够上传文件并将文件附加到内容并管理这些上传。该模块负责验证文件内容和管理上传的文件。它还提供用于显示文件内容的选项。

作为站点管理员,您将能够控制可以上传的文件类型及其最大大小。

File 模块通过为Field 模块定义 File 字段类型来提供其功能文件附件是在内容类型级别(或其他实体)定义的。要了解如何定义字段并将其添加到内容类型,请参阅使用字段 UI

用途

将文件字段添加到内容类型

导航到要添加文件字段的内容类型的“管理字段”选项卡(管理 > 结构 > 内容类型,以及特定内容类型的链接管理字段)。

选择字段类型文件,为该字段指定一个标签和机器名称,单击并将其拖动到字段中您想要的位置,然后点击保存按钮。

在添加任何新字段时,您首先需要设置字段特定设置。这些适用于您使用该领域的所有地方。这些不能按实体更改。

  • 选中后,启用显示字段选项允许用户选择在查看内容时是否应显示文件。

  • 文件显示默认选项使得显示文件选项被选中默认情况下,当用户把文件上传到这个领域。

  • 默认情况下上传目的地只有公共文件选项可用——使文件直接从服务器可用(无需 Drupal 检查任何访问权限)。如果要使用私有文件,必须首先在文件系统管理页面(管理 > 配置 > 媒体:文件系统更改一些设置详情请见下文。

下一步是仅为该实例设置字段设置。这可以在不同的内容类型(或其他实体)之间进行更改。

您可以在配置内容类型时为文件字段添加验证选项。您必须列出最终用户需要能够上传的所有文件扩展名。上传文件的可选文件目录是文件系统管理页面(管理 > 配置 > 媒体:文件系统)中定义的文件系统路径的子目录您可以为每个上传的文件指定最大文件大小。

管理附件显示

将文件附加到内容后,您可以指定是否将其显示在附加文件列表中。列出的文件会自动显示在内容底部的一个部分中;例如,未列出的文件可以嵌入到您的内容中,但不包含在列表中。(在您的内容中嵌入文件意味着您复制文件的路径并手动将其嵌入您想要的位置,例如,作为链接标签插入内容中。请注意,文本格式“过滤的 HTML”默认拒绝任何图像标签..)

在特定内容类型的管理页面(管理 > 结构 > 内容类型您的内容类型的链接字段显示的“管理显示”选项卡中提供了用于管理文件列表显示的其他选项

管理文件位置和访问

创建文件字段时,您可以指定站点文件系统的子目录,用于存储此内容类型的上传文件。站点的文件系统路径在文件系统页面(管理 > 配置 > 媒体:文件系统)上定义。

您还可以指定文件是存储在公共目录中还是存储在私有文件存储区中。public目录下的文件可以通过web服务器直接访问;当列出公共文件时,将使用文件的直接链接,任何知道文件 URL 的人都可以下载该文件。私有目录中的文件不能通过网络服务器直接访问;当列出私有文件时,链接是 Drupal 路径请求(例如,“/system/files/name-of-the-file.pdf”;这里,“system/files/”不是文件系统中的实际文件夹,其内容由 Web 服务器提供,而是由 Drupal 管理的虚拟 URL,通过它可以下载私有文件)。这会增加服务器负载和下载时间,因为 Drupal 必须解析每个文件下载请求的路径,要添加访问限制

公共文件的最佳做法是将它们存储在多站点目录中,例如:

sites/default/files

为您的文件安全地添加私有目录的默认方法是使用您的 Web 服务器无法直接访问但 Drupal 可以访问的目录。理想情况下,此目录应位于 Drupal 根文件夹之外。

为文件添加私有目录的简单方法是在公共目录下创建一个子目录,例如:

sites/default/files/private

当您在 admin/config/media/file-system 中指定私有目录时,它将自动创建子目录并创建一个简单的 .htaccess 文件Deny from all这会阻止 Apache 从此目录中提供文件。确保通过将文件添加到该目录并验证您无法直接浏览该目录来测试它。如果这不起作用,任何能猜到 URL 的人都可以访问此目录中的所有文件!请注意,非 Apache Web 服务器可能需要额外的配置来保护私有文件目录。

只要有可能,建议您选择位于 Drupal 根文件夹之外(或实际上位于 Web 根之外)的目录,如果您在共享主机上,这可能会很棘手。如果您确实有权访问,您可以选择一个私有目录,该目录将与您的 Web 根目录(通常称为 public_html 或 www 或类似)处于同一级别,使用:

../private

访问私人文件

重要的是要理解,仅仅因为文件字段被配置为使用私有文件系统,并不意味着 Drupal 会阻止任何人查看通过该字段上传的文件。这些文件将由 Drupal 提供(通过像“/system/files/name-of-the-file.pdf”这样的 URL),但如果有特定的 URL,Drupal 只会阻止用户通过该 URL 下载文件这样做的原因。

例如:您创建了一个带有文件字段的新内容类型,该字段将文件存储在您站点的私有文件目录中。接下来,您从这个新的内容类型创建一个节点并附加两个新文件。当节点发布时,两个附加文件的链接都是可见的,任何可以查看节点的人都可以下载文件。现在,如果您取消发布节点以使站点的最终用户无法再访问它,那么这些用户也无法下载所有附加文件,即使他们使用指向在节点发布时工作的文件的直接链接也是如此。

为了更精细地控制谁可以查看/下载附件,您需要一个额外的访问控制模块。您可以自己编写模块,也可以使用贡献的模块,例如Content Access

技术细节

PHP配置

要使文件上传工作,必须正确配置 PHP。可能需要在 PHP php.ini 文件、.htaccess 文件或 settings.php 文件中设置或配置以下 PHP 配置变量。

  • file_uploads = On 必须设置为“开”

  • upload_max_filesize = 24M 不能大于 post_max_size

  • max_input_time = 300 小值可能会导致大文件上传超时

  • memory_limit = 64M 小的值可能会导致大文件上传的内存不足错误

  • max_execution_time = 180 小值可能会导致大文件上传超时

  • post_max_size = 24M 限制提交给网站的输入的大小(包括附件)

进一步参考

标签

帮助改进此页面

页面状态: 无已知问题

你可以:
  • 登录,点击编辑,然后编辑此页面

  • 登录,点击讨论,更新页面状态值,并提出改进建议

  • 登录并根据您的建议创建文档问题