【问题标题】:Strapi - Media Library frontend side upload with user-specific accessStrapi - 具有用户特定访问权限的媒体库前端上传
【发布时间】:2022-12-03 09:41:03
【问题描述】:

我想让授权的最终用户(非管理员)直接从前端将图像上传到媒体库(没有查看限制 - 上传后公开)。

如何让用户在上传过程中只能看到他自己的文件夹?我可以创建一个包含用户 ID 的文件夹吗?如何以编程方式创建文件夹?有可能吗?或者我必须使用 Cloudinary 或 S3?

【问题讨论】:

  • 你能做到吗?
  • @SalahAdDin,是的,您需要复制一个插件并自己编辑控制器和服务
  • 你能从你的 Strapi 项目中扩展它吗?
  • @SalahAdDin 我添加了答案,请尝试告诉我它是否有效

标签: upload strapi


【解决方案1】:

要扩展 Strapi 插件的功能,我们需要将所需的插件从 node_modules 复制到 src/extensions

在这个特定的例子中,我们只想稍微修改 `add()

srcextensionsuploadservicesupload.js

async add(values, { user } = {}) {
  const fileValues = { ...values };

  if (user) {
    fileValues[UPDATED_BY_ATTRIBUTE] = user.id;
    fileValues[CREATED_BY_ATTRIBUTE] = user.id;
    fileValues.username = user.username; // <<< Here
  }
  sendMediaMetrics(fileValues);

  const res = await strapi.query(FILE_MODEL_UID).create({ data: fileValues });

  await this.emitEvent(MEDIA_CREATE, res);

  return res;
},

也许这还不够,我只是不记得所有的步骤,但我认为这可以解决问题。如果不是 - 只需通过调用链并确保 user.username 在这个阶段不是 undefined 并且它会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 2023-01-12
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2014-05-18
    相关资源
    最近更新 更多