2017-04-04 53 views
-1

我將文件上傳到我的PHP webservice,將它們編碼爲Base64並通過Json發送。如何從解碼的Base64字符串中提取文件名和擴展名php

我使用這個代碼在服務器上進行解碼的數據:$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

你把文件名和擴展到編碼在JavaScript字符串中的Base64? – RiggsFolly

+0

您不會提供有關腳本中實際發生的事情的很多信息。如何與我們分享一些代碼,以便我們可以看到你在做什麼 – RiggsFolly

+1

從你的問題來看,'$ file'是文件名還是它的內容是不明確的。你可能想澄清。 –

回答

0

我用thw干預/圖像庫https://github.com/Intervention/image 來處理base64編碼的圖像。該圖書館還有許多其他功能。

$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); 

或者,如果您有該文件的MIME類型,你可以使用函數image_type_to_extension獲取文件擴展名

+0

我不想成爲一個痛苦在這裏,但是:從OP實際上說,他有什麼是一個緩衝區包含一個不確定類型的文件,他們從JavaScript傳遞到PHP作爲base64編碼的字符串。他們已經將其解碼爲_something_,但他們並沒有說它是一個圖像,即使它不包含文件名和擴展名,除非該數據以某種方式添加到JavaScript中的字符串中。 _或我錯過了什麼_ – RiggsFolly

+0

@RiggsFolly我沒有嘗試使用javascript編碼文件,但嘗試使用PHP編碼文件,它始終具有MIME類型以及內容。 – Ima

+0

解碼後的文件可以是image/pdf或zip文件。你的答案只適用於圖像。 –

相關問題