4

JSON 请求中的哪个 Drupal Rest API 属性控制 Drupal 的文件状态(临时和永久)逻辑?

我正在尝试通过Multipart/form-data(即 JSON 数据加上附加的 [上传] 文件)上传到 Drupal 8.1.x CMS。至此,上传成功。但是,在 Drupal 中上传的文件(通过 REST)最初默认存储为“TEMPORARY”状态。

我想告诉 Drupal 在将我的文件存储到 Drupal CMS 时将文件的状态设置为“PERMANENT”。我进行了一些搜索,发现 File.php 中的关键字“status”在 TEMPORARY 和 PERMANENT 周围具有魔力。到目前为止,我一直在我的 Json 请求中包含属性“status”,但 Drupal 会生成一个内部错误 --> 消息:

"Access denied on creating field 'status'"

设置后 "status": [{"value": "1"}]

顺便说一句:我尝试了对“value”的值表示的不同变体,即“1”、1、true、“true”……,因为我无法获得有关特定于 API 规范的更多信息Rest 文件上传接口。

我已经在 Drupal 网站上搜索了一个解决方案,但还没有令人满意的结果。

问题:有谁知道如何构造状态为 PERMANENT 的 JSON 请求?

4

1 回答 1

4

这是一个错误,可以在以下 Drupal 源文件中修复:

diff --git a/src/Normalizer/FileEntityNormalizer.php b/src/Normalizer/FileEntityNormalizer.php
index cdb1df0..3237905 100644
--- a/src/Normalizer/FileEntityNormalizer.php
+++ b/src/Normalizer/FileEntityNormalizer.php
@@ -52,6 +52,7 @@ class FileEntityNormalizer extends ContentEntityNormalizer {
     else {
       throw new \RuntimeException(SafeMarkup::format('Failed to write @filename.', array('@filename' => $entity->getFilename())));
     }
+    $entity->status = FILE_STATUS_PERMANENT;
     return $entity;
   }
 }

参考

于 2017-07-12T23:06:32.987 回答