我想知道在上传时让我的3mb照片更小的最佳方法我有这个上传表格但由于某种原因它不会上传图像超过2mb我继续得到"文件太小或大" PHP仅限
$valid_exts = array('jpeg', 'jpg', 'png', 'gif');
$max_file_size = 2000000 * 1234567;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ( isset($_FILES['image']) ) {
if (! $_FILES['image']['error'] && $_FILES['image']['size'] < $max_file_size) {
$ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
if (in_array($ext, $valid_exts)) {
if (!file_exists('photos/' )) {
mkdir('photos/' , 0777, true);
}
$path = 'photos/' . uniqid() . '.' . $ext;
$size = getimagesize($_FILES['image']['tmp_name']);
$x = (int) $_POST['x'];
$y = (int) $_POST['y'];
$w = (int) $_POST['w'] ? $_POST['w'] : $size[0];
$h = (int) $_POST['h'] ? $_POST['h'] : $size[1];
$data = file_get_contents($_FILES['image']['tmp_name']);
$vImg = imagecreatefromstring($data);
$dstImg = imagecreatetruecolor($w, $h);
imagecopyresampled($dstImg, $vImg, 0, 0, $x, $y, $w, $h, $w, $h);
imagejpeg($dstImg, $path);
imagedestroy($dstImg);
/*print_r($path);*/
} else {
echo 'unknown problem!';
}
} else {
echo 'file is too small or large';
}
} else {
echo 'file not set';
}
} else {
echo 'bad request!';
}
答案 0 :(得分:1)
$_FILES['image']['error']
是整数代码,其中UPLOAD_ERR_OK
为0
。 Docs
替换:
if (! $_FILES['image']['error'] && $_FILES['image']['size'] < $max_file_size)
使用:
if ( ($_FILES['image']['error'] == UPLOAD_ERR_OK) && ($_FILES['image']['size'] < $max_file_size) )
如果您不关心文件的大小,我建议您甚至不要费心检查文件的大小。没有必要随意设置一个不可能的最大文件大小,就像你已经受到以下约束:
post_max_size
和upload_max_size
中的php.ini
。