首页 > 解决方案 > Strapi Upload Plugin:如何在 cron 作业中上传远程文件

问题描述

我正在使用带有 s3 作为提供程序的strapi 上传插件。在我的strapi实例(/upload)上点击上传api端点时效果很好。但是,我在我们的 repo 中有一个 cron 作业,它检查 s3 存储桶中的图像并上传它们。有没有办法使用全局strapi对象调用上传插件,而不必在cron作业中发出http请求?后者似乎有点奇怪,因为 cron 作业与 strapi 在同一台服务器上运行。

在我的 config/functions/cron.js 文件中,我目前有这个:

        const imageBuffer = await fetch(imageURL).then((response) => response.buffer());
        const formData = new FormData();
        formData.append('files', imageBuffer, { filename: imageURL.split('/').pop() });
        const uploadResult = await fetch('xxxxx/upload', {
            method: 'POST',
            body: formData
        }).then((response) => response.json());

我宁愿做一些简单的事情,比如:

      const imageBuffer = await fetch(imageURL).then((response) => response.buffer());
      await strapi.plugins.upload(imageBuffer)

我一直在尝试对插件在其控制器文件中的作用进行逆向工程,但这似乎也不理想。

Strapi 专家的任何帮助将不胜感激!

标签: javascriptnode.jsstrapi

解决方案


我找到了解决方案,它是:

  return strapi.plugins['upload'].services.upload.upload(
    { data: {fileInfo: {}}, files: {
      path: path.resolve("public/uploads" + filename), // Put your file path
      name: "asd.png",
      type: 'image/png'
    }}
  )

推荐阅读