2017-04-04 29 views
-1

ファイルをBase64にエンコードしてJson経由で送信することで、PHP Webサービスにファイルをアップロードしています。デコードされたBase64文字列からファイル名と拡張子を抽出する方法

私はこのコードを使用してサーバ上のデータを復号化しています:$file_content = base64_decode($file,true);

は、今私は$file_content変数からファイル名と拡張子を抽出したいです。

どうすればいいですか?

UPDATE:ここで私は、ファイルを復号化するために使用されるコードは次のとおりです。

include '../conn.php'; 
include '../functions.php'; 

$entityBody = file_get_contents('php://input'); 
$decodedJson = json_decode($entityBody); 
$user_email = $decodedJson->{'email'}; 
$user_token = $decodedJson->{'token'}; 

$file = $decodedJson->{'file'}; //This is the encoded content of the file from JSON 
$file_content = base64_decode($file,true); 

if(!checkStudentAuthorizationOrHigher($user_email,$user_token,$conn)) 
{ 
    die(); 
} 

//now I want to get $file_content type (extension or MIME type) and 
//file name from the $file_content 
//I tried the below code but it only gets file path as input parameter and doesn't work this way 

echo mime_content_type($file_content); 

のみファイルのコンテンツは、(ファイル名や拡張子、私のサービスに送信されません)JSONを通じて私のPHPのWebサービスに与えられ、 。それが役に立つなら、私のアプリケーションのクライアント側はC#Windows FormsアプリケーションとAndroidアプリケーションの両方です。

ファイルをクライアント側と同じファイル名でサーバーに保存します。また、ファイルの種類がサーバー上で許可されていることを確認する必要があります。 (ファイルは.pdf、.jpg、.jpeg、.zip)

変数$file_contentからファイル情報を抽出する方法はありますか?

+1

を取得する機能image_type_to_extensionを使用することができますが、JavaScriptでbase64でエンコードされた文字列にファイル名と拡張子を入れていましたか? – RiggsFolly

+0

あなたのスクリプトで実際に何が起こっているかについての情報はあまりありません。実際に何をしているのかわかるように、私たちといくつかのコードを共有するのはどうですか? – RiggsFolly

+1

あなたの質問から、 '$ file'がファイルの名前かその内容であるかどうかは不明です。明確にしたいかもしれません。 –

答えて

0

私は、介入/画像ライブラリhttps://github.com/Intervention/image を使用して、base64でエンコードされた画像を処理しました。このライブラリには他にも多くの機能があります。あなたは、ファイルのMIMEタイプを持っている場合

$imageManager = new Intervention\Image\ImageManager(); 
$imageObject = $imageManager->make($base64EncodedImageSource); 

$imageInfo = getimagesize($base64EncodedImageSource); 
$this->mimeType = $imageInfo[2]; 
$extension = image_type_to_extension($this->mimeType); 
$width = $imageInfo[0]; 
$height = $imageInfo[1]; 
$tempFilePath = '/path/to/file'; 
$imageObject->save($tempFilePath, 100); 

あるいは、あなたはファイル拡張子

+0

私はここに苦しんでいるつもりはありませんが:OPが実際に言っていることから、彼が持っているのは、javascriptからPHPにbase64でエンコードされた文字列として渡された不定型のファイルを含むバッファです。彼らはそれを_something_に戻してデコードしましたが、たとえそのデータが何らかの形でjavascriptの文字列に追加されていなければ、ファイル名と拡張子は含まれません。私は何かが欠けている_ – RiggsFolly

+0

@RiggsFolly私はjavascriptを使用してファイルをエンコードしようとしませんでしたが、コンテンツと共にMIMEタイプを持っていたphpを使ってエンコードファイルを試しました。 – Ima

+0

デコードされたファイルは、image/pdfまたはzipファイルです。あなたの答えは画像にのみ適用されます。 –

関連する問題