web-dev-qa-db-ja.com

PHP base64 pdfファイルをエンコード

Dropboxなどにドキュメントを送信できるAPIを使用しています。ドキュメントによると、送信されるファイルはBASE64でエンコードされたデータである必要があります。

それで、私はこのようなものを試しています

$b64Doc = chunk_split(base64_encode($this->pdfdoc));

どこ $this->pdfdocはmy PDFドキュメントへのパスです。

現在、ファイルは送信されていますが、無効のようです(何も表示されていません)。

PDFをBASE64エンコードされたデータに正しく変換していますか?

ありがとう

8
katie hudson

base64_encodeは文字列入力を受け取ります。つまり、パスをエンコードするだけです。ファイルの内容を取得する必要があります

$b64Doc = chunk_split(base64_encode(file_get_contents($this->pdfdoc)));
20
Machavity

base64_encode()は、渡した文字列をエンコードします。渡す値がファイル名の場合、取得するのはファイルの内容ではなく、エンコードされたファイル名だけです。

おそらく最初にfile_get_contents($this->pdfdoc)か何かをしたいと思うでしょう。

2
Ian

base64をpdfに変換し、サーバーパスに保存します。

// Real date format (xxx-xx-xx)
$toDay   = date("Y-m-d");

// we give the file a random name
$name    = "archive_".$toDay."_XXXXX_.pdf";

// a route is created, (it must already be created in its repository(pdf)).
$rute    = "pdf/".$name;

// decode base64
$pdf_b64 = base64_decode($base_64);

// you record the file in existing folder
if(file_put_contents($rute, $pdf_b64)){
    //just to force download by the browser
    header("Content-type: application/pdf");

    //print base64 decoded
    echo $pdf_b64;
}
0