Node.js 撇号:仅允许上载PDF文件

Node.js 撇号:仅允许上载PDF文件,node.js,apostrophe,apostrophe-cms,Node.js,Apostrophe,Apostrophe Cms,我有一个领域与关系。我只想上传PDF文件。然而,我不想更改app.js/default.js中dgad附件的默认设置,该设置允许所有office类型的文件,因为这些文件在项目中的其他位置需要 { name: '_file', type: 'joinByOne', withType: 'apostrophe-file', label: 'File', required: true, idField: 'fileId', filters: { projection

我有一个领域与关系。我只想上传PDF文件。然而,我不想更改app.js/default.js中
dgad附件的默认设置,该设置允许所有
office
类型的文件,因为这些文件在项目中的其他位置需要

{
  name: '_file',
  type: 'joinByOne',
  withType: 'apostrophe-file',
  label: 'File',
  required: true,
  idField: 'fileId',
  filters: {
    projection: {
      slug: 1,
      title: 1,
      attachment: 1
    }
  },
  extensions: ['pdf'],
  extensionMaps: {},
  image: false
}

有人能帮我吗?

听起来你想在撇号附件中创建一个新的文件组。您可以使用文件组来指定在将撇号“附件”字段添加到对象的架构时,哪些类型的文件和/或扩展名应可用。要添加仅包含PDF的文件组,您需要将其添加到app.js文件中的modules对象中:

'apostrophe-attachments': {
    fileGroups: [
        {
            name: 'pdf',
            label: 'Pdf',
            extensions: ['pdf'],
            image: false
        }
    ]
}
这将创建一个新的文件组,该文件组只允许扩展名为“pdf”的文件。撇号文件不是常规的模式类型(它不能像其他对象那样添加到对象的模式)。与其使用撇号文件,不如使用撇号附件,可以给它一个文件组来限制允许的文件类型。为了在附件中指定该组,您的新字段将如下所示:

{
  name: 'file',
  type: 'attachment',
  label: 'File',
  group: 'pdf',
  required: true
}
如果您确实决定需要直接使用连接到撇号文件,则可能需要添加一些自定义代码以限制文件类型。如果是这种情况,您可以在此处找到有关撇号文件的更多信息:

您可能会看到撇号附件处理文件组的方式,并在必要时复制该行为:


谢谢约瑟夫!我非常感谢你在这个问题上付出的努力和时间。更多我正在寻找的是具体的文件更改,而不是全局的,因为app.js更改将不允许我们上传其他模块/文件中的其他文件,而不是PDF。这实际上不会阻止您上传其他文件类型-它所做的只是创建一个新的文件组,仅用于PDF。无论您在何处使用撇号附件,都可以选择指定您想要的文件组-在这种情况下,当您在试图添加附件的任何对象的架构中指定文件组“pdf”时,它将仅限制您可以使用的文件类型。除非您在所有撇号附件字段上手动指定该文件组,否则它不会影响整个应用程序。但我需要键入
joinByOne
,以单独输入上传的文件,如上面的示例所示。我与您的示例保持一致,其中下载按钮显示的是文件的大小。使用joinByOne无法解决这一问题。使用撇号附件与joinByOne所做的相同,只是它使用的附件类型添加了额外的工具。您如何获取文件大小?我通过
{{w.\u file.attachment.length | fileSize}}
获取文件大小。我试图实现你给出的代码。它还允许上传图像:)。