Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel从上传的图像中获取mimeType_Php_Laravel - Fatal编程技术网

Php Laravel从上传的图像中获取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"

我正在使用jQuery文件上传程序上传一个调整大小的图像,将其转换为blob并将其作为blob保存到DB中

对于数据库,我还需要保存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']

什么都不管用。你知道如何提取这些信息吗?

在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()
方法获取文件