php上传图片错误
Posted
技术标签:
【中文标题】php上传图片错误【英文标题】:Php Upload Image Error 【发布时间】:2016-03-08 20:31:43 【问题描述】:<?php
header('Content-Type: text/plain; charset=utf-8');
try
// Undefined | Multiple Files | $_FILES Corruption Attack
// If this request falls under any of them, treat it invalid.
if (
!isset($_FILES['upfile']['error']) ||
is_array($_FILES['upfile']['error'])
)
throw new RuntimeException('Invalid parameters.');
// Check $_FILES['upfile']['error'] value.
switch ($_FILES['upfile']['error'])
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_NO_FILE:
throw new RuntimeException('No file sent.');
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
throw new RuntimeException('Exceeded filesize limit.');
default:
throw new RuntimeException('Unknown errors.');
// You should also check filesize here.
if ($_FILES['upfile']['size'] > 1000000)
throw new RuntimeException('Exceeded filesize limit.');
// DO NOT TRUST $_FILES['upfile']['mime'] VALUE !!
// Check MIME Type by yourself.
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (false === $ext = array_search(
$finfo->file($_FILES['upfile']['tmp_name']),
array(
'jpg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
),
true
))
throw new RuntimeException('Invalid file format.');
// You should name it uniquely.
// DO NOT USE $_FILES['upfile']['name'] WITHOUT ANY VALIDATION !!
// On this example, obtain safe unique name from its binary data.
if (!move_uploaded_file(
$_FILES['upfile']['tmp_name'],
sprintf('./uploads/%s.%s',
sha1_file($_FILES['upfile']['tmp_name']),
$ext
)
))
throw new RuntimeException('Failed to move uploaded file.');
echo 'File is uploaded successfully.';
catch (RuntimeException $e)
echo $e->getMessage();
?>
我已将所有相关权限更新为 755。我收到以下错误:
致命错误:在 upload.php 行 36
中找不到类 'finfo'【问题讨论】:
你的 PHP 版本是多少?finfo
在 5.3.0 之前不可用。
啊。 5.1.2!那么有没有类似的替代方案?
您是否尝试将权限更新为 777 ?
【参考方案1】:
您使用的 PHP 版本不支持finfo
。您最有可能最多使用 PHP v5.2,它于 2007 年发布,现在只有大约 9 年历史。我建议更新到 PHP v5.3。但是,如果您坚持使用 PHP v5.2(或更早版本),那么请查看this question,其中建议使用Fileinfo package(也很旧)。
【讨论】:
以上是关于php上传图片错误的主要内容,如果未能解决你的问题,请参考以下文章