首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:$_FILES[]中未定义的索引

PHP:$_FILES[]中未定义的索引
EN

Stack Overflow用户
提问于 2017-10-23 19:23:49
回答 2查看 599关注 0票数 0

我试图在PHP中创建一个上传脚本。我收到以下错误消息:

代码语言:javascript
运行
复制
Notice: Undefined index: file in path\upload\index.php on line 3

这是我的表格(非常基本):

代码语言:javascript
运行
复制
<form action="upload" method="post" enctype="multipart/form-data">
   <input type="file" name="file" id="fileUpload">
   <input type="submit" value="Upload Image" name="submitt">
</form>

这是我的(不工作)上传脚本:

代码语言:javascript
运行
复制
<?php
    $name       = $_FILES['file']['name'];
    $temp_name  = $_FILES['file']['tmp_name'];

    if(isset($name)){
        if(!empty($name)){
            $location = '../data/';
            if(move_uploaded_file($temp_name, $location.$name)){
                echo 'File uploaded successfully';
            }
        }
    }  else {
        echo 'You should select a file to upload !!';
    }
?>

这是我的php.ini配置:

代码语言:javascript
运行
复制
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads=On

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize=40M

; Maximum number of files that can be uploaded via a single request
max_file_uploads=20

; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size=50M

那我做错了什么。我检查了以前问过的每一个问题,但没有找到答案。

编辑1:

在签出this并修改我的代码之后,问题仍然存在。

代码语言:javascript
运行
复制
<?php
    if (isset($_POST['submitt'])) {

        if (isset($_FILES['file']) && isset($_FILES['file']['name']) && isset($_FILES['file']['tmp_name'])) {

            $name       = $_FILES['file']['name'];
            $temp_name  = $_FILES['file']['tmp_name'];

            if(!empty($name)){
                $location = '../data/';
                if(move_uploaded_file($temp_name, $location.$name)){
                    echo 'File uploaded successfully';
                }
            }  else {
                echo 'You should select a file to upload !!';
            }

        }
    }
?>

编辑2:

我发现了这个问题:将action upload替换为upload/index.php解决了问题。我正在本地机器上使用XAMPP来测试我的代码。这是由于XAMPP本身的Apache配置不正确而导致的错误。

EN

Stack Overflow用户

发布于 2017-10-23 19:28:33

当用户提交表单而没有选择上载全局变量(数组) $_FILES的文件时,file将没有项,因此出现了此错误,您必须检查此键是否可用,如下所示:

代码语言:javascript
运行
复制
if (isset($_FILES['file']) && isset($_FILES['file']['name']) && isset($_FILES['file']['tmp_name'])) {
    // Now you have strict and robust code!
    $name       = $_FILES['file']['name'];
    $temp_name  = $_FILES['file']['tmp_name'];
    // Rest of your code ...
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46897019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档