Php Laravel从上传的图像中获取mimeType
我正在使用jQuery文件上传程序上传一个调整大小的图像,将其转换为blob并将其作为blob保存到DB中 对于数据库,我还需要保存mimeType,我在收到的请求中看到了它,但我不知道如何获取mimeType值 发送图像的代码:Php Laravel从上传的图像中获取mimeType,php,laravel,Php,Laravel,我正在使用jQuery文件上传程序上传一个调整大小的图像,将其转换为blob并将其作为blob保存到DB中 对于数据库,我还需要保存mimeType,我在收到的请求中看到了它,但我不知道如何获取mimeType值 发送图像的代码: var formData = new FormData(); formData.append("_token", $('meta[name="csrf-token"]').attr('content')); formData.append("user_id_val"
var formData = new FormData();
formData.append("_token", $('meta[name="csrf-token"]').attr('content'));
formData.append("user_id_val", $('.user-general-i').data('userid'));
// HTML file input, chosen by user
formData.append("userfile", data.files[0]);
var request = new XMLHttpRequest();
request.open("POST", "http://localhost.eu/home/create_comment_images");
request.onload = function(oEvent) {
if (request.status == 200) {
console.log('success');
} else {
console.log(request.status);
}
};
request.send(formData);
服务器上的代码:
public function create_comment_images(Request $data) {
\Log::info($data);
try {
$path = $data->userfile;
$logo = file_get_contents($path);
$base64 = base64_encode($logo);
return ['success' => true];
} catch (\Exception $e) {
return ['success' => false, 'message' => $e->getMessage()];
}
return ['success' => false, 'message' => 'Something went wrong'];
}
日志信息显示:
array (
'_token' => 'QxOqetFU2Re6fwe442vksGNnvV0C88v8dcrFpAp',
'user_id_val' => '568092',
'userfile' =>
Illuminate\Http\UploadedFile::__set_state(array(
'test' => false,
'originalName' => 'Unbenannt.png',
'mimeType' => 'image/png',
'error' => 0,
'hashName' => NULL,
)),
)
我快到了,我需要从数组中获取mimeType信息
我试过:
$data->userfile->mime_content_type
$data->userfile->mimeType
$data->userfile['mimeType']
$data->userfile[0]['mimeType']
什么都不管用。你知道如何提取这些信息吗?在Laravel上,你可以使用干预库。这个库非常强大,你可以改变格式,调整大小和做各种事情 这里有一个基本的例子
// read image from temporary file
$img = Image::make($_FILES['image']['tmp_name']);
// get or sets the mime type.
$mimeType = $img::mime();
// save image
$img->save('foo/bar.jpg');
// Get image as string.
$string = base64_encode($img->encode('jpg'));
要从上载的文件头获取mimetype,您可以在
\illumb\Http\UploadedFile
类上调用getMimeType()
$uploadedFile = $data->file('userfile');// or
$mimeType = $uploadedFile->getMimeType()
只是猜测一下
$data->userfile->getMimeType()
给它一个tryWebsite,对于我来说是无法访问的,我刚刚验证过,正在我这边工作这是完整的链接。我尝试过这个,但没有成功,但我找到了一个解决办法。我用JS设置了所需的信息:formData.append(“userfile\u name”,data.files[0].name);formData.append(“userfile\u mime”,data.files[0].type)
关于$data->userfile[0]->getMimeType()
?@Roman从客户端获取MimeType是错误的做法。您将自己暴露在一些安全问题中。尝试从request()->file()
方法获取文件