2

我正在 Linux 中阅读这一行。但是,当我在浏览器中回显这个时,什么都没有出现。我使用回声线的方式有问题吗?

// relevant code snippets
$mypic = $_FILES['upload']['name'];
$temp = $_FILES['upload']['tmp_name'];
$type = $_FILES['upload']['type'];

/*$finfo=finfo_open(FILEINFO_MIME_TYPE);
$type=finfo_file($finfo,$temp);
finfo_close($finfo);*/

echo "<pre>"; print_r($_FILES);
echo $mypic."<br />";
echo $type."<br />";
echo $_FILES['upload']['error']."<br />";
echo var_dump($type)."<br />";

如果您怀疑我在另一个文件中处理文件输入的方式有问题,我已将该 php 文件包含在此链接中。

<form ENCTYPE="multipart/form-data" method="post" action="insert.php">

Name: <input type="text" name="name" maxlength="15" /><br />
Email: <input type="text" name="email" maxlength="30" /><br />
Password: <input type="password" name="password" maxlength="15" /><br />
Confirm Password: <input type="password" name="cpassword" maxlength="15" /><br />

<input type="hidden" name="MAX_FILE_SIZE" value="10000">
Choose your picture: <input type="file" name="upload"><p>
<input type="submit" name="submit" value="Register" /><br />

<p>
<center><h3><?php include("links.php"); ?></h3></center>

</form>

这是我看到的打印输出:

数组([上传] => 数组([名称] => 抗议.jpg [类型] => [tmp_name] => [错误] => 2 [大小] => 0)

) 抗议.jpg

2字符串(0)“”

------------------更新至 2012 年 5 月 5 日晚上 9:40------------------ ----

试了一个图标,发现除了权限设置没有问题(我觉得暂时可以自己解决)。但是,我仍然坚持设置文件大小。我按照彼得斯图尔特的指示得到了以下打印输出:

在此处输入图像描述

显然,这两个设置中的文件大小限制足以处理我拥有的原始图像(小于 200 kb)。我不知道在这种情况下我还能做些什么。

4

4 回答 4

4

文件类型为空,原因与文件大小为 0 错误为 2 相同。

错误消息解释

UPLOAD_ERR_FORM_SIZE 值:2;上传的文件超出了 HTML 表单中指定的 MAX_FILE_SIZE 指令。

您将最大大小设置为10000,以字节为单位,因此大约为 10Kb。如果它是在任何现代数码相机(超过 4mgpx)上拍摄的照片,它可能需要至少是该尺寸的十倍。暂时忽略最大尺寸,直到您获得人们提交的图像尺寸的粗略平均值。PHP 有自己的最大上传大小,以避免占用太长时间。

为避免将来出现此类问题(不知道文件上传是否成功),您可能希望将代码包装在以下内容中:

$upload_error[0] = "AOK";
$upload_error[1] = "Server says: File too big!";
$upload_error[2] = "Browser says: File too big!";
$upload_error[3] = "File upload didn't finish.";
$upload_error[4] = "Ummm.... You forgot the file.";
$upload_error[6] = "Oops.  Webmaster needs to fix something.";
$upload_error[7] = "Server says: I'm stuffed. Email webmaster.";
$upload_error[8] = "Server says: Not gonna do it.  Webmaster needs to fix something.";


if($_FILES['upload']['error'] == 0) {
   //do your thing and move it to the database.
} else {
    $error_num = $_FILES['upload']['error'];
    echo $upload_error[$error_num];
}
于 2012-05-05T22:08:13.133 回答
1

我会在你的 PHP ini 文件中检查你的 PHP 上传大小限制。它可能会导致不利的问题:)

如果您创建或进入您的 php.ini 文件并确保设置如下:

upload_max_filesize = 5M

post_max_size = 5M
于 2012-05-05T22:12:28.420 回答
0

这个问题已经有 7 年了,但我没有找到明确的程序来理解它。这就是我控制它的方式:

缺点是我可以上传小图像(小于 2MB)但不大于 2MB。完美识别错误很重要。在这种情况下,"UPLOAD_ERR_FORM_SIZE:" DEBUG 中的错误是$_FILES["image"]["type"] = "",(荒谬)我知道那肯定是一个 .JPG 图像。

解决方案:使用 XAMPP,停止它。配置 php.ini,转到“upload_max_filesize=2M”,这意味着您尝试上传的文件有 2 MB 的限制,因此您将其更改为(例如)3M。之后,我再次启动 XAMPP,并继续上传 2.5 MB 的图像,并且成功。

抱歉,我的状态无法在此评论中显示配置图像。

于 2019-11-13T19:28:17.783 回答
0

设置的顺序也很重要,应该是这样的

upload_max_filesize = 5M
post_max_size = 5M

post_max_size而且我在之前放置 时总是遇到最大尺寸错误upload_max_filesize

于 2018-09-26T17:25:40.053 回答