質問編集履歴

1

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

2018/12/13 05:27

投稿

hasshy
hasshy

スコア102

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