通过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
相关产品推荐
相关产品推荐

