如何从php中解码的Base64字符串中提取文件名和扩展名

时间:2017-04-04 10:43:33

标签: php

我将文件上传到我的PHP网络服务,将它们编码为Base64并通过Json发送。

我使用以下代码解码服务器上的数据:$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窗体应用程序又是Android应用程序。

我想将文件保存在服务器上,文件名与客户端相同。另外,我必须检查文件类型以确保它在服务器上是允许的。 (文件可以是.pdf,.jpg,.jpeg或.zip)

现在有办法从$file_content变量中提取文件信息吗?

1 个答案:

答案 0 :(得分:0)

我使用了干预/图像库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来获取文件扩展名