STRAPI RestAPI - 如何将图像上传到组件中的媒体字段? 4.2

问题描述 投票:0回答:1

我有一个关于 Strapi v4 的大问题,我知道很多人都在问这个问题。但我上网花了4个小时,发现了很多案例,但没有一个是解决了,就是放弃了。

问题是(见截图)

我有一个组件,它有一个 Media 字段,我如何使用 RestAPI 将图像加载到该字段中?

如果我的属性(这是属性集合的父级)只有“媒体”字段,不涉及任何组件/动态区域/块,我就能够加载图像。

但目前的实现要求我使用嵌套的 Media 字段,因为该组件是重复的,并且它将具有不同的项目(房间),并且每个房间都有自己的照片或照片数组。

我试图弄清楚我需要发出什么样的请求(或创建一个自定义控制器),以便当我将正确的数据和路径传递给 formData 时,我将加载图像,然后将图像绑定到组件?

其实嵌套比较深,但总体来说问题很清楚。

如有任何建议,我将不胜感激。

property response

last

image rest upload components strapi
1个回答
0
投票

这是许多开发者的挣扎点。不受欢迎的主要原因:

the forms aren't supposed to work that way

基本上,当用户创建表单时,您实际上并不希望在提交表单时处理上传,但您希望在添加到表单时上传元素(使用

/upload
)。这可以帮助您避免诸如主体尺寸过大、更容易验证和其他问题等错误,如果您注意到 Strapi 媒体的工作原理与您上传到库然后附加...

无论如何,这里的秘密是

lodash
get prop 方法,它将地址扁平化为
my.array[0].media[0]

因此,假设我们有内容类型

article
,并且有名为
section
的可重复组件,并且其中有
image
字段:

const formData = new FormData();

formData.append('files.section[0].image', file, file.name)

P.s.需要从头部进行测试

文档指出:

If you want to upload files for a repeatable component, you will have to specify the zero-based index of the item you want to add the file to, using the following syntax: files.my_component_name[the_index].attribute_name. For instance, if you put 3 components and the file is for the second one, the index will be 1.

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.