1

I am developing a visualforce page. I'm trying to upload pdf-file from remote server in contentversion , here is part of my code:

let response = await fetch('http://www.africau.edu/images/default/sample.pdf');
let blob = await response.blob();
let filename = 'File.pdf';
let _file = new File([blob], filename); 

let cv = new sforce.SObject('ContentVersion');
cv.Title        = filename;
cv.PathOnClient = filename;
cv.VersionData  = blob;
cv.VersionData = cv.VersionData.substring(dataStart);
cv.ContentLocation = 'S';

let result = await sforce.connection.create([cv]);
console.log('result > ', result);

But file in ContentVersion is wrong. Any ideas?

Upd.: an interesting thing: if I'll set js debugs and try to download file locally (not to sf) - then I can do it. But only with debug points

1 Answer 1

0

You have to make sure that the VersionData has base64 encoded string for the file.

Add one more function to convertBlobtoBase64

export const convertBlobToBase64 = blob => new Promise((resolve, reject) => {
  const reader = new FileReader;
  reader.onerror = reject;
  reader.onload = () => {
     resolve(reader.result);
  };
  reader.readAsDataURL(blob);
});

Then modify your code to

let response = await 
 fetch('http://www.africau.edu/images/default/sample.pdf');
 let blob = await response.blob()
 .then(convertBlobToBase64)
 .then((result) => {
            fileContent = result;
            const base64Constant = 'base64,';
            const base64ImageValue =
                fileContent.indexOf(base64Constant) + base64Constant.length;
            this.base64Data = fileContent.substring(base64ImageValue);
            let cv = new sforce.SObject('ContentVersion');
            cv.Title = filename;
            cv.PathOnClient = filename;
            cv.VersionData  = blob;
            cv.VersionData = cv.VersionData.substring(dataStart);
            cv.ContentLocation = 'S';

            let result = await sforce.connection.create([cv]);
            console.log('result > ', result);
     });

You can then use the Base64 encoded string in versionData

2
  • Unfortunately that doesn't work Commented Aug 15, 2020 at 12:01
  • What error are you getting? Commented Aug 15, 2020 at 12:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .