Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void uploadToAmazonS3 () {
- String filename = this.record.File_Name__c;
- String attachmentBody = EncodingUtil.base64Encode(fileBlob);
- String formattedDateString = DateTime.now().formatGMT('EEE, dd MMM yyyy HH:mm:ss z');
- String bucketname = 'test-salesforce-upload';
- String host = 's3.amazonaws.com';
- String key = credentials.key;
- String secret = credentials.secret;
- String stringToSign = 'PUTnnn'+formattedDateString+'nn/'+bucketname+'/'+filename;
- Blob mac = Crypto.generateMac('HMACSHA1', blob.valueOf(stringToSign), blob.valueof(secret));
- String signed = EncodingUtil.base64Encode(mac);
- String authHeader = 'AWS' + ' ' + key + ':' + signed;
- HttpRequest req = new HttpRequest();
- req.setMethod('PUT');
- req.setHeader('Authorization', authHeader);
- req.setEndpoint('https://s3.amazonaws.com/'+bucketname);
- req.setHeader('Host', bucketname + '.' + host);
- req.setHeader('Content-Length', String.valueOf(attachmentBody.length()));
- req.setHeader('Content-Type', contentType);
- req.setHeader('Connection', 'keep-alive');
- req.setHeader('Date', formattedDateString);
- req.setHeader('ACL', 'public-read-write');
- Blob blobBody = EncodingUtil.base64Decode(attachmentBody);
- req.setBodyAsBlob(blobBody);
- Http http = new Http();
- HTTPResponse resp = http.send(req);
- System.debug(resp);
- }
- DEBUG|System.HttpResponse[Status=Forbidden, StatusCode=403]
Add Comment
Please, Sign In to add comment