我正在使用jQuery文件上传器上传经过调整大小的图像,将其转换为blob并将其作为blob保存到数据库中。
对于数据库,我还需要保存mimeType,我在请求中看到了该mimeType,但是我不了解如何获取mimeType值。
发送图像的代码:
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']
没有任何效果。有什么想法可以提取这些信息吗?
答案 0 :(得分:0)
在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'));
答案 1 :(得分:0)
要从上传的文件标题中获取模仿类型,可以在getMimeType()
类上调用\Illuminate\Http\UploadedFile
。
$uploadedFile = $data->file('userfile');// or
$mimeType = $uploadedFile->getMimeType()