Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Adobe Summit 2023 [19th to 23rd March, Las Vegas and Virtual] | Complete AEM Session & Lab list
SOLVED

AEM Asset Upload \'completeURI\' field invalid in initiateUpload response

Avatar

Level 1

I am trying to upload an asset to my local AEMaaCS instance using the Asset Upload Api (specifically with the aem-upload node package). When I make the request I am not getting the URI that the document says I should.

Here is the request that I am using:

const encodedAuth = Buffer.from(`${username}:${password}`).toString('base64');
const uploadFiles = [
    {
        fileName: 'test.png',
        fileSize: 4994,
        filePath: './src/resources/test.png'
    }
];
const upload = new DirectBinaryUpload();
upload.on('filestart', data => {
    console.log('filestart:', data);
});
upload.on('fileprogress', data => {
    console.log('fileProgress:', data);
});
upload.on('fileend', data => {
    console.log('FileEnd:', data);
});
upload.on('fileerror', data => {
    console.log('FileError:', data);
});
const options = new DirectBinaryUploadOptions()
    .withUrl('http://localhost:4502'+'/content/dam/test')
    .withUploadFiles(uploadFiles);

options.withHeaders({
    'content-type': 'image/png',
    'authorization': `Basic ${encodedAuth}`
});
const uploadResult = await upload.uploadFiles(options)
    .then(result => {
        return result;
    })
    .catch(error => {
        console.log('error:', error);
        return error;
    });

And the Response I recieve:

FileError: { fileName: 'test.png',
      fileSize: 4994,
      targetFolder: '/content/dam/test',
      targetFile: '/content/dam/test/test.png',
      sourceFolder: '/home/node/app/src/resources',
      sourceFile: '/home/node/app/src/resources/test.png',
      errors:
       [ { Error: 'completeURI' field invalid in initiateUpload response: {"folderPath":"/content/dam/test","files":[{"fileName":"test.png"}]}
             at UploadError.<anonymous> (/home/node/app/node_modules/core-js/internals/wrap-error-constructor-with-cause.js:37:62)
             at new Error (/home/node/app/node_modules/core-js/modules/es.error.cause.js:28:43)
             at new BlockTransferError (/home/node/app/node_modules/@adobe/httptransfer/es2015/block/blocktransfer-error.js:48:5)
             at new UploadError (/home/node/app/node_modules/@adobe/httptransfer/es2015/block/upload-error.js:100:5)
             at Function.fromError (/home/node/app/node_modules/@adobe/httptransfer/es2015/block/upload-error.js:76:14)
             at TransferController.controller.on.transferEvent (/home/node/app/node_modules/@adobe/httptransfer/es2015/aem/aemupload.js:324:34)
             at TransferController.emit (events.js:182:13)
             at TransferController.notifyError (/home/node/app/node_modules/@adobe/httptransfer/es2015/controller/transfercontroller.js:208:10)
             at /home/node/app/node_modules/@adobe/httptransfer/es2015/functions/aeminitiateupload.js:371:22
             at Generator.next (<anonymous>)
           code: 'EUNKNOWN',
           innerStack:
            'Error: \'completeURI\' field invalid in initiateUpload response: {"folderPath":"/content/dam/test","files":[{"fileName":"test.png"}]}\n    at /home/node/app/node_modules/core-js/internals/wrap-error-constructor-with-cause.js:37:62\n    at Error (/home/node/app/node_modules/core-js/modules/es.error.cause.js:28:43)\n    at /home/node/app/node_modules/@adobe/httptransfer/es2015/functions/aeminitiateupload.js:309:17\n    at Generator.next (<anonymous>)\n    at resume (/home/node/app/node_modules/@adobe/httptransfer/es2015/functions/aeminitiateupload.js:142:362)\n    at /home/node/app/node_modules/@adobe/httptransfer/es2015/functions/aeminitiateupload.js:142:540\n    at process._tickCallback (internal/process/next_tick.js:68:7)',
           uploadError: true } ] }

I also noticed the following in my instance's error logs. I don't understand the "missing field: fileName" error as I am setting it as the documentation specifies in my example above and it is in the response.

 

Any help would be appreciated!

1 Accepted Solution

Avatar

Correct answer by
Level 1

According to this source, https://medium.com/adobetech/introduction-to-aem-as-a-cloud-service-asset-upload-http-api-fc560ffd72... the upload api does not work with local instances of AEMaaCS.

1 Reply

Avatar

Correct answer by
Level 1

According to this source, https://medium.com/adobetech/introduction-to-aem-as-a-cloud-service-asset-upload-http-api-fc560ffd72... the upload api does not work with local instances of AEMaaCS.