teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

説明の要点がまとまっていなかったため文章を書き直しました。

2018/12/13 05:27

投稿

hasshy
hasshy

スコア102

title CHANGED
@@ -1,1 +1,1 @@
1
- 【PHP】バイナリデータのPDFをブラウザで表示したい
1
+ 【PHP】salesforceで登録している実ファイルのバイナリデータをブラウザで表示したい
body CHANGED
@@ -1,32 +1,27 @@
1
- base64形式のバイナリデータをブラウザで出力するにはどうしたら良いでしょうか?
1
+ base64形式のバイナリデータをブラウザで出力するにはどうしたら良いでしょうか?
2
+
2
3
  ユーザーの概念があるシステムで、ユーザー毎に動的にファイルを変えます。
4
+ ユーザーやバイナリファイルの管理はsalesforceで行なっています。
3
5
 
4
- ## ソース
6
+ ## 構成
5
- 実現したい事を簡略化したソースが下記です。
6
- 仮に```viewPDF.php```とします。
7
+ salsesforceのAPI経由でデータを取得します。
7
8
 
9
+ 該当するユーザー(Accountオブジェクトとは別のオブジェクト)に紐ずく```Attachement```オブジェクトから、PDFのバイナリデータを取得します。
8
- viewPDF.phpにアクセスすると該当するユーザーのPDFを表示します。
10
+ 取得後取得したPDFのバイナリデータデコードしてブラウザ上に表示します。
11
+
12
+ Attachmentオブジェクトから該当するIDのbody(base64にエンコードされたデータ)を取得する事は確認できました。
13
+
9
14
  ```php
10
15
  <?php
11
- // ユーザーに紐付くbase64でエンコードされた、バイナリデータを取得します
12
16
 
13
- $userID = 1;
14
- $pdfFIles = [
15
- 'user0.pdf',
16
- 'user1.pdf'
17
- ]
18
- $rowData = base64_encode($pdfFIles[$userID])
17
+ $rowFile = <Attachmentオブジェクトから取得したファイルのbody>;
19
-
20
- // PDFファイル作成
21
18
  header('Content-Type: application/pdf');
22
- echo(base64_decode($rowData));
19
+ echo(base64_decode($rowFile));
23
20
  exit();
24
21
 
25
22
  ?>
26
23
  ```
27
24
 
28
- 実際には、バイナリデータ自体をデータベース上で管理しており、ユーザーに紐づくPDFデータを取得します。
29
-
30
25
  ## エラー内容
31
26
  PDFとして認識できていないのか表示できません。
32
27
  ![イメージ説明](7b6c91aa2e776758bbbbba97f646e8cb.png)