我将文件上传到我的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
变量中提取文件信息吗?
答案 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来获取文件扩展名