sapUI5 应用程序中的 Cloudinary SDK

Cloudinary SDK in sapUI5 application

我想使用自动将图像标记到 sap Fiori 应用程序中的东西。我发现 Cloudinary 有一个名为 Google Auto Tagging 的插件,应该很适合这个目的。所以我按照 this 指南在我的 web 应用程序的控制器文件中使用 Cloudinary javascript SDK,并且我在我的 PC 中安装了 javascript SDK 但是我无法导入 Cloudinary 库进入我的项目。

我尝试使用“cloudinary-core”文件夹创建一个 zip,将其导入到我的项目中并包含“cloudinary-core.js”,但出现错误 Cannot read property 'Cloudinary' of undefined

我还尝试包含“cloudinary-core.min.js”,根据我的理解,它应该是库的独立缩小版本,但出现了同样的错误。

这就是我尝试导入库的方式:

/* global cloudinary:true */
sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "mdonamcve/libs/cloudinary-core/cloudinary"
], function(Controller, cloudinary) {
    "use strict";

    return Controller.extend("mdonamcve.controller.MainTable", {
        
        onInit: function() {
            var cd = new cloudinary.Cloudinary({cloud_name: "demo", secure: true});
        },
        ...
    };
}

我检查了路径,它是正确的,但“cloudinary”仍未定义。

Cloudinary SDK 可以用于 sap Fiori 应用程序,对吗?难道我做错了什么?如果 Cloudinary 不起作用,是否有其他替代方案?

如果 Cloudinary 不使用 UI5 的定义模块的方式,那么 undefined 会传递给 cloudinary

Cloudinary 的全局名称好像是cloudinary。为了不掩盖在定义控制器时传递一个稍微不同的名称:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "mdonamcve/libs/cloudinary-core/cloudinary"
], function(Controller, Cloudinary /* now with a capital C */) {

这样,全局可用的 window.cloudinary(或仅 cloudinary)也应该在您的控制器中可用。 Cloudinary(大写字母 C)仍然是未定义的,可以忽略。

参考:This blog.

由于您需要使用需要签署请求的 Cloudinary 附加组件,这是为了保护您免受其他人滥用该附加组件的侵害。最简单的解决方案可能是使用上传小部件。您还需要有一个端点到您的其中一台服务器,该端点在上传之前对请求进行签名。一切都应该记录在这里: (https://cloudinary.com/documentation/upload_widget#signed_uploads)