You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过REST API向Drupal 8.5.1上传带分类的媒体实体PDF文档

没问题,我帮你梳理出完整的解决方案——通过Drupal 8.5.1的REST API上传PDF并创建带全量元数据(包括分类术语)的Media Entity。下面是一步步的实操指南:

完整实现方案:REST API上传PDF到Drupal 8.5.1并创建Media Entity

前提准备

先确保你的Drupal站点已经配置好这些基础项:

  • 启用REST、REST UI、Media、Serialization、File核心/ contrib模块
  • 为你的PDF对应的Media类型(比如默认的document类型)开启REST访问权限,允许POST操作
  • 配置好认证方式(比如Basic Auth,要确保操作的用户拥有创建Media、上传文件、关联分类术语的权限)
  • 目标分类词汇(比如document_category)已经存在,并且有可用的术语

完整CURL请求示例

这里是包含标题、描述、分类术语的完整POST请求,以上传当前目录的sample.pdf为例:

curl -X POST \
  http://your-drupal-site.com/jsonapi/media/document \
  -u "admin:your-password" \
  -H "Content-Type: multipart/form-data" \
  -F "data[attributes][name]=Sample Document" \
  -F "data[attributes][description]=This is a sample PDF document for testing REST upload." \
  -F "data[relationships][field_document_category][data][0][type]=taxonomy_term--document_category" \
  -F "data[relationships][field_document_category][data][0][id]=5" \
  -F "data[relationships][field_media_document][data][type]=file--file" \
  -F "data[relationships][field_media_document][data][meta][filename]=sample.pdf" \
  -F "data[relationships][field_media_document][data][meta][fileUri]=data:application/pdf;base64,$(base64 sample.pdf)"

关键参数拆解

我把请求里的核心部分解释清楚,方便你根据自己的站点调整:

  • -u "admin:your-password":这里用Basic Auth做身份验证,替换成你站点的有权限用户名和密码
  • data[attributes][name]:对应Media实体的标题,也就是你要的「Sample Document」
  • data[attributes][description]:文档的描述信息,按需替换内容
  • 分类术语关联部分:data[relationships][field_document_category]
    • type:格式为taxonomy_term--[你的分类词汇机器名],比如你的词汇机器名是document_category,就填这个值
    • id:对应你要关联的分类术语ID(可以在Drupal后台术语详情页查看,或者通过REST API查询获取)
  • field_media_document:这是Media类型中关联文件的字段(默认document类型用的是这个字段名,如果你自定义了Media类型,要替换成你实际的字段机器名),这里用base64编码传递文件内容,确保跨环境兼容性

注意事项

  • 如果你的Media类型不是默认的document,要把URL中的media/document改成media/[你的Media类型机器名]
  • 分类术语的字段名如果不是field_document_category,一定要替换成你站点实际使用的字段机器名
  • 如果你不想用base64编码,也可以直接用-F "file=@sample.pdf"的方式上传,但要注意和relationships部分的字段对应,base64方式在REST API场景下兼容性更好
  • 务必确保操作的用户拥有create media、create file、access content以及分类术语的相关权限

这样就能成功上传PDF并创建包含所有元数据的Media实体了。

内容的提问来源于stack exchange,提问作者karlk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:21