SalesforceからDropBoxへのファイル連携サンプル
Salesforceの中のファイルをDropBoxに移さなきゃ行けなくなった。
API自体は公開されているが全編英語?!
googleに聞いてみるとどこもSDK使ってて中身がわからない。
ということでgoogle翻訳に切り替えてちまちま作ってみました。
Base64にエンコードして渡すんだけど上手くいかない・・・
なにやらファイルの実態をbodyに渡さなきゃいけない的なことらしい。
でもHttpRequest.setBody(body)ではblob型入らないし???
と思ったらちゃんとありました。知らなかったー!
HttpRequest.setBodyAsBlob(body)
ということで以下はサンプルコードです。
-
public class DropBoxApi{ -
//アクセストークン -
private static String acToken = 'ご自身のアプリのアクセストークン'; -
// ファイル作成 -
public void createFileInDropbox(){ -
HttpRequest req = new HttpRequest(); -
req.setEndpoint('https://content.dropboxapi.com/2/files/upload'); -
req.setMethod('POST'); -
// アクセストークンをセット -
req.setHeader('Authorization', 'Bearer ' + acToken); -
// ファイルの種類がテキストならこっち -
//req.setHeader('Content-Type', 'text/plain; charset=dropbox-cors-hack'); -
// ファイルの種類がテキスト以外ならこっち -
req.setHeader('Content-Type', 'application/octet-stream'); -
// ファイルの格納先 -
req.setHeader('Dropbox-API-Arg','{ "path":"/Salesforce Documents/aaaaa.pdf" }'); -
//ファイルの実態 -
ContentVersion cv = [SELECT Id -
,VersionData -
FROM ContentVersion -
WHERE TITLE = '移行ファイル' -
limit 1]; -
//ファイルをbodyに格納 -
req.setBodyAsBlob(cv.VersionData); -
//リクエストを送信 -
Http http = new Http(); -
HTTPResponse res = http.send(req); -
} -
}

