2011-08-11 7 views
0

私のアプリケーションでは、base64stringに異なるファイルがあります。 これらのbase64Stringを受け取った後、私のアプリケーションは を元のフォーマットに変換する必要があります。 これらのファイルは、pdf、txt、jpegイメージ、bmpイメージ、gifイメージ、またはpngイメージ形式です。 それぞれの形式に変換するために、このファイルの形式を知るにはどうすればよいですか。 base64stringがこの情報を与える方法はありますか? ご協力いただければ幸いです。異なるファイル形式を保存する

答えて

1

base64データにはファイルデータ自体のみが含まれており、メタデータはありません(ファイル名/拡張子を含む)。デコードされたbase64データの最初の数バイトを解析してファイルの種類を調べようとする可能性がありますが、サービスではHTTPヘッダー(Content-Dispositionなど)にこの情報を追加する方が簡単です。

1

私はbase64stringからバイナリ形式に変換してディスクに保存する必要があると思います。ユーザーが関連するプログラムを使用して開くことができるように、正しいファイル拡張子または完全なファイル名を取得する必要があります。

0

ファイルタイプを取得する信頼できる唯一の手段は、ファイルに関連付けられたメタデータです。これがあなたのケースで利用できない場合、回避策は、ファイルの最初の数バイトを読み取ることです。多くの一般的な形式では、その形式のファイルは「マジックナンバー」と呼ばれる一連のバイトで始まる必要があります。

このWikipedia articleは、PDF、JPG、PNG、およびGIF形式の数字を提供します。 BMPファイルは通常、定数0x42 0x4D(*)で始まります。テキストファイルにはコンテンツのみが含まれているため、デフォルトのオプションである必要があります(つまり、最初の数バイトが既知の魔法番号として認識されない場合は、それがテキストファイルであると想定します)。

Base-64エンコーディング単にファイルのバイナリ表現です。バイトシーケンスに変換し、最初の数バイトを評価するだけで、ファイルが特定のタイプであることを示唆するのに十分なはずです。これは不完全な回避策であることに注意してください。例えば、マジックナンバー(例えば、「BM」)で始まるテキストファイルは、別のタイプのファイルとして分類されなくてもよい。

関連する問題