2

直到最近,我一直在使用一些 PHP 将照片上传到网站。但突然它开始触发各种错误消息。

我使用的表单在操作时运行以下代码:

$uploaddir = "../../user_content/photo/";
$allowed_ext = array("jpeg", "jpg", "gif", "png");

    if(isset($_POST["submit"])) {
        $file_temp = $_FILES['file']['tmp_name'];   
        $info = getimagesize($file_temp);
    } else {
        print "File not sent to server succesfully!";
        exit;
    }

表单的文件上传部分有以下元素:

<input name="file" type="file" class="photo_file_upload">

上传的提交按钮具有以下属性:

<button type="submit" name="submit" class="photo_upload">Upload</button>

但是每当我运行它时,我总是会收到以下警告:

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in (upload PHP file) on line 10

(第 10 行是这部分:$info = getimagesize($file_temp);)

有人对这是什么原因有任何想法吗?

4

6 回答 6

9

您检查了表单是否已提交,但没有检查文件是否已发送。在某些情况下,可以提交表单但不会发送文件(即文件大小大于配置中的文件大小限制)。

用这个:

if(isset($_POST["submit"]) && isset($_FILES['file'])) {
    $file_temp = $_FILES['file']['tmp_name'];   
    $info = getimagesize($file_temp);
} else {
    print "File not sent to server succesfully!";
    exit;
}

你看&& isset($_FILES['file'])是新的

或者你可以扩展它

if(isset($_POST["submit"]) && isset($_FILES['file'])) {
    $file_temp = $_FILES['file']['tmp_name'];   
    $info = getimagesize($file_temp);
} 
elseif(isset($_POST["submit"]) && !isset($_FILES['file'])) {
    print "Form was submitted but file wasn't send";
    exit;
}
else {
    print "Form wasn't submitted!";
    exit;
}
于 2013-04-16T18:06:02.547 回答
3

在 php.ini 文件中更改这些参数;(目前它只允许上传和发布 2Mb 大小)。有时这是这些错误的原因。

upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 120
于 2017-10-16T11:21:40.323 回答
2

警告:getimagesize() [function.getimagesize]: 文件名不能为空

验证 MAX_SIZE 变量,例如为 2Mo 图像定义它:

define('MAX_SIZE', 2000000);
<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" /> 
<input name="fichier" type="file" id="fichier_a_uploader" /> <br>
<input type="submit" name="submit" value="Uploader" /> 
</form>

您还可以验证 PHP 将接受的最大 POST 数据大小和 PHP.ini 中上传文件的最大允许大小: post_max_size = ? 上传最大文件大小 = ?

于 2016-02-26T02:22:34.033 回答
1

升级 'upload-max-filesize' 后,重新启动 wamp 或 xampp 的所有服务!会的!

于 2017-09-07T09:58:06.927 回答
0

您应该将表单 enctype 更改为“multipart/form-data”

<form method="post" enctype="multipart/form-data">
     ....
</form>
于 2014-11-13T11:32:59.370 回答
-2

注意:未定义索引:第 38 行 D:\xampp\htdocs\public_html\php\form_php\application\process_application.php 中的 fileToUpload

注意:未定义索引:第 43 行 D:\xampp\htdocs\public_html\php\form_php\application\process_application.php 中的 fileToUpload

警告:getimagesize():第 43 行 D:\xampp\htdocs\public_html\php\form_php\application\process_application.php 中的文件名不能为空 文件不是图像。抱歉,文件已存在。注意:未定义索引:第 58 行 D:\xampp\htdocs\public_html\php\form_php\application\process_application.php 中的 fileToUpload 抱歉,只允许 JPG、JPEG、PNG 和 GIF 文件。抱歉,您的文件没有上传。

如果您遇到这样的错误,您应该检查您是否已将表单 enctype 添加到“multipart/form-data”

<form method="post" enctype="multipart/form-data">
     ....
</form>

一开始就经常把我抓出来。

于 2017-11-01T02:44:15.253 回答