Laravel从上传的图片中获取mimeType

时间:2019-08-14 12:40:14

标签: php laravel

我正在使用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']

没有任何效果。有什么想法可以提取这些信息吗?

2 个答案:

答案 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'));

Intervention Reference

答案 1 :(得分:0)

要从上传的文件标题中获取模仿类型,可以在getMimeType()类上调用\Illuminate\Http\UploadedFile

$uploadedFile = $data->file('userfile');// or 
$mimeType = $uploadedFile->getMimeType()