本文包含面向开发人员的建议、参考资料和资源。 Assets as a Cloud Service. 其中包括新的资产上传模块、API引用,以及有关后处理工作流中提供的支持的信息。
Assets as a Cloud Service 提供多个API以便以编程方式与数字资产交互。 每个API都支持特定的用例,如下表所述。 此 Assets 用户界面, Experience Manager 桌面应用程序和 Adobe Asset Link 支持全部或部分操作。
某些API继续存在,但不受主动支持(用×表示)。 请尽量不要使用这些API。
支持级别 | 描述 |
---|---|
✓ | 支持 |
× | 不受支持. 请勿使用。 |
- | 不可用 |
用例 | aem-upload | Experience Manager/Sling/JCR Java API | asset compute服务 | Assets HTTP API | Sling GET / POST servlet | GraphQL |
---|---|---|---|---|---|---|
原始二进制文件 | ||||||
创建原始文件 | ✓ | × | - | × | × | - |
读取原始 | - | × | ✓ | ✓ | ✓ | - |
更新原始内容 | ✓ | × | ✓ | × | × | - |
删除原始文件 | - | ✓ | - | ✓ | ✓ | - |
复制原件 | - | ✓ | - | ✓ | ✓ | - |
移动原始 | - | ✓ | - | ✓ | ✓ | - |
元数据 | ||||||
创建元数据 | - | ✓ | ✓ | ✓ | ✓ | - |
读取元数据 | - | ✓ | - | ✓ | ✓ | - |
更新元数据 | - | ✓ | ✓ | ✓ | ✓ | - |
删除元数据 | - | ✓ | ✓ | ✓ | ✓ | - |
复制元数据 | - | ✓ | - | ✓ | ✓ | - |
移动元数据 | - | ✓ | - | ✓ | ✓ | - |
内容片段(CF) | ||||||
创建Cf | - | ✓ | - | ✓ | - | - |
读取CF | - | ✓ | - | ✓ | - | ✓ |
更新Cf | - | ✓ | - | ✓ | - | - |
删除Cf | - | ✓ | - | ✓ | - | - |
复制CF | - | ✓ | - | ✓ | - | - |
移动Cf | - | ✓ | - | ✓ | - | - |
版本 | ||||||
创建版本 | ✓ | ✓ | - | - | - | - |
读取版本 | - | ✓ | - | - | - | - |
删除版本 | - | ✓ | - | - | - | - |
文件夹 | ||||||
创建文件夹 | ✓ | ✓ | - | ✓ | - | - |
读取文件夹 | - | ✓ | - | ✓ | - | - |
删除文件夹 | ✓ | ✓ | - | ✓ | - | - |
复制文件夹 | ✓ | ✓ | - | ✓ | - | - |
移动文件夹 | ✓ | ✓ | - | ✓ | - | - |
In Experience Manager as a Cloud Service,您可以使用HTTP API直接将资产上传到云存储。 上传二进制文件的步骤如下。 在外部应用程序而不是内部执行这些步骤 Experience Manager JVM。
在外部应用程序(而非内部)中执行上述步骤 Experience Manager JVM。
该方法提供了可扩展且更高效的资产上传处理。 与 Experience Manager 6.5为:
请参阅客户端代码以在开源中实施此方法 aem-upload库.
在某些情况下,由于Cloud Service中的存储最终具有一致的性质,因此更改可能不会在请求Experience Manager之间完全传播。 由于未传播必需的文件夹创建,因此导致404响应启动或完成上载调用。 客户端应会收到404响应,并通过实施带回退策略的重试来处理这些响应。
将HTTPPOST请求提交到所需的文件夹。 在此文件夹中创建或更新资产。 包括选择器 .initiateUpload.json
指示请求是启动二进制文件的上传。 例如,应创建资产的文件夹的路径为 /assets/folder
. POST请求是 POST https://[aem_server]:[port]/content/dam/assets/folder.initiateUpload.json
.
请求正文的内容类型应为 application/x-www-form-urlencoded
表单数据,包含以下字段:
(string) fileName
: 必填. 资源在中显示的名称 Experience Manager.(number) fileSize
: 必填. 要上传的资源的文件大小(以字节为单位)。只要每个二进制文件都包含必需字段,就可以使用单个请求来启动多个二进制文件的上传。 如果成功,请求将做出响应 201
状态代码和包含JSON数据的正文,格式如下:
{
"completeURI": "(string)",
"folderPath": "(string)",
"files": [
{
"fileName": "(string)",
"mimeType": "(string)",
"uploadToken": "(string)",
"uploadURIs": [
"(string)"
],
"minPartSize": (number),
"maxPartSize": (number)
}
]
}
completeURI
(字符串):在二进制文件完成上载时调用此URI。 URI可以是绝对URI或相对URI,客户端应该能够处理任一URI。 即,值可以是 "https://[aem_server]:[port]/content/dam.completeUpload.json"
或 "/content/dam.completeUpload.json"
参见 完全上传.folderPath
(字符串):上传二进制文件的文件夹的完整路径。(files)
(数组):其长度和顺序与启动请求中提供的二进制信息列表的长度和顺序匹配的元素列表。fileName
(字符串):相应二进制文件的名称,在启动请求中提供。 此值应包含在完整的请求中。mimeType
(字符串):在启动请求中提供的相应二进制文件的mime类型。 此值应包含在完整的请求中。uploadToken
(字符串):相应二进制文件的上载令牌。 此值应包含在完整的请求中。uploadURIs
(数组):字符串列表,其值是二进制文件的内容应上载到的完整URI(请参阅 上载二进制文件)。minPartSize
(数字):可以提供给任一个服务器的数据的最小长度,以字节为单位。 uploadURIs
,表示存在多个URI。maxPartSize
(数字):可以提供给任一个数据库的数据的最大长度,以字节为单位。 uploadURIs
,表示存在多个URI。启动上载的输出包括一个或多个上载URI值。 如果提供了多个URI,则客户端可以将二进制文件拆分为多个部分,并按顺序向提供的上传URI发出每个部分的PUT请求。 如果选择将二进制文件拆分为多个部分,请遵循以下准则:
minPartSize
.maxPartSize
.maxPartSize
,将二进制文件拆分为多个部分以上传。如果二进制文件的大小小于或等于 maxPartSize
,您可以改为将整个二进制文件上传到单个上传URI。 如果提供了多个上传URI,请使用第一个URI并忽略其余的URI。 您无需使用所有URI。
CDN边缘节点有助于加快请求的二进制文件上传。
完成此任务的最简单方法是使用 maxPartSize
作为零件尺寸。 如果您使用此值作为部件大小,API合同可确保有足够的上传URI来上传您的二进制文件。 要执行此操作,请将二进制文件拆分为大小部分 maxPartSize
,按顺序为每个部件使用一个URI。 最终部分可以具有小于或等于任意尺寸 maxPartSize
. 例如,假定二进制文件的总大小为20,000字节, minPartSize
为5,000字节, maxPartSize
为8,000字节,上传URI的数量为5。 执行以下步骤:
minPartSize
.常见的错误是根据API提供的上传URI的数量计算部件大小。 API合同并不保证此方法有效,并且实际上可能会导致部件大小超出两者之间的范围 minPartSize
和 maxPartSize
. 这可能会导致二进制上传失败。
同样,最简单、最安全的方法是只使用大小等于 maxPartSize
.
如果上传成功,服务器将使用响应每个请求 201
状态代码。
上传二进制文件的所有部分后,向启动数据提供的完整URI提交HTTPPOST请求。 请求正文的内容类型应为 application/x-www-form-urlencoded
表单数据,包含以下字段。
字段 | 类型 | 必需或非必需 | 描述 |
---|---|---|---|
fileName |
字符串 | 必填 | 初始数据提供的资源的名称。 |
mimeType |
字符串 | 必填 | 初始数据提供的二进制文件的HTTP内容类型。 |
uploadToken |
字符串 | 必填 | 由启动数据提供的二进制文件的上载令牌。 |
createVersion |
布尔值 | 可选 | 如果 True 并且存在具有指定名称的资源,则 Experience Manager 创建资源的新版本。 |
versionLabel |
字符串 | 可选 | 如果创建新版本,则标签与资源的新版本关联。 |
versionComment |
字符串 | 可选 | 如果创建了新版本,则注释与该版本相关联。 |
replace |
布尔值 | 可选 | 如果 True 并且存在具有指定名称的资产, Experience Manager 删除资产,然后重新创建资产。 |
uploadDuration |
数字 | 可选 | 文件完整上传所花费的总时间,以毫秒为单位。 如果指定,上传持续时间将包含在系统的日志文件中,用于传输速率分析。 |
fileSize |
数字 | 可选 | 文件的大小(字节)。 如果指定,文件大小将包含在系统的日志文件中,以便进行传输速率分析。 |
如果资产存在但两者都不存在 createVersion
也不 replace
已指定,则 Experience Manager 使用新二进制文件更新资产的当前版本。
与启动过程一样,完整的请求数据可能包含多个文件的信息。
在调用文件的完整URL之前,不会完成上传二进制文件的过程。 上传过程完成后会处理资产。 即使资产的二进制文件完全上传,但上传过程未完成,处理也不会开始。 如果上传成功,服务器将做出响应 200
状态代码。
要了解有关上传算法的更多信息或构建您自己的上传脚本和工具,Adobe提供了开源库和工具:
aem-upload库和命令行工具都使用 node-httptransfer库
仅支持新的上传方法 Adobe Experience Manager as a Cloud Service. 来自的API Adobe Experience Manager 6.5已弃用。 与上传或更新资产或演绎版(任何二进制上传)相关的方法在以下API中已弃用:
AssetManager
Java API,如 AssetManager.createAsset(..)
In Experience Manager,资产处理基于 处理配置文件 使用的配置 资源微服务. 处理不需要开发人员扩展。
对于后处理工作流配置,请使用带有扩展的标准工作流和自定义步骤。
如果您从以前的版本升级 Experience Manager,则可以使用资产微服务来处理资产。 云原生资源微服务配置和使用更加简单。 中使用的几个工作流步骤 DAM更新资产 不支持以前版本中的工作流。 有关支持的类的详细信息,请参见 Java API引用或Javadocs.
以下技术工作流模型已由资产微服务替换,或者该支持不可用:
com.day.cq.dam.cameraraw.process.CameraRawHandlingProcess
com.day.cq.dam.core.process.CommandLineProcess
com.day.cq.dam.pdfrasterizer.process.PdfRasterizerHandlingProcess
com.day.cq.dam.core.process.AddPropertyWorkflowProcess
com.day.cq.dam.core.process.CreateSubAssetsProcess
com.day.cq.dam.core.process.DownloadAssetProcess
com.day.cq.dam.word.process.ExtractImagesProcess
com.day.cq.dam.word.process.ExtractPlainProcess
com.day.cq.dam.ids.impl.process.IDSJobProcess
com.day.cq.dam.indd.process.INDDMediaExtractProcess
com.day.cq.dam.indd.process.INDDPageExtractProcess
com.day.cq.dam.core.impl.lightbox.LightboxUpdateAssetProcess
com.day.cq.dam.pim.impl.sourcing.upload.process.ProductAssetsUploadProcess
com.day.cq.dam.core.process.SendDownloadAssetEmailProcess
com.day.cq.dam.similaritysearch.internal.workflow.smarttags.StartTrainingProcess
com.day.cq.dam.similaritysearch.internal.workflow.smarttags.TransferTrainingDataProcess
com.day.cq.dam.switchengine.process.SwitchEngineHandlingProcess
com.day.cq.dam.core.process.GateKeeperProcess
com.day.cq.dam.s7dam.common.process.DMEncodeVideoWorkflowCompletedProcess
com.day.cq.dam.core.process.DeleteImagePreviewProcess
com.day.cq.dam.video.FFMpegTranscodeProcess
com.day.cq.dam.core.process.ThumbnailProcess
com.day.cq.dam.video.FFMpegThumbnailProcess
com.day.cq.dam.core.process.CreateWebEnabledImageProcess
com.day.cq.dam.core.process.CreatePdfPreviewProcess
com.day.cq.dam.s7dam.common.process.VideoUserUploadedThumbnailProcess
com.day.cq.dam.s7dam.common.process.VideoThumbnailDownloadProcess
com.day.cq.dam.s7dam.common.process.VideoProxyServiceProcess
com.day.cq.dam.scene7.impl.process.Scene7UploadProcess
com.day.cq.dam.s7dam.common.process.S7VideoThumbnailProcess
com.day.cq.dam.core.process.MetadataProcessorProcess
com.day.cq.dam.core.process.AssetOffloadingProcess
com.adobe.cq.dam.dm.process.workflow.DMImageProcess
另请参阅