javascript - 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 专家的任何帮助将不胜感激!
解决方案
我找到了解决方案,它是:
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'
}}
)
推荐阅读
- sql - PL/SQL 中的 SQL 注入 - 神话还是事实?
- angular - 配置路由保护
- linux - arecord 文件类型标头是否在开始时流式传输?
- javascript - 将值输入输入(用户名、密码、电子邮件等)并使用 javascript 提交
- json - 我需要从我的 component.ts 文件中保存的 JSON 对象中获取数据
- r - 在 R Shiny 的 UI 中的 IF 语句中使用反应值
- android - 是否可以将 DataSnapShot 更改为模型?
- ruby-on-rails - Rails:使用 Authlogic 进行 Google 身份验证
- java - Kotlin:只有 getter 的私有可变属性
- javascript - Kendo MVVM - 模板未更新