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);
-
}
-
}