首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >表单提交后$_FILES为空

表单提交后$_FILES为空
EN

Stack Overflow用户
提问于 2013-02-28 15:47:43
回答 6查看 29.5K关注 0票数 18

我正在使用标准的PHP函数上传一个文件,作为PHPMailer的附件。

代码语言:javascript
复制
<form name="upload" method="post" action="send_form_email3.php">
    <div width="100%" class="con3">
        <div class="lable">
            <label for="first_name">First Name *</label>
        </div>
        <input  type="text" name="first_name" id="first_name" class="span4">

        <div class="lable">
            <label for="email">Email Address *</label>
        </div>
        <input  type="text" name="email" id="email" class="span4">

        <div class="lable">
            <label for="telephone">Contact Number *</label>
        </div>
        <input  type="text" name="telephone" id="telephone" class="span4">

        <div class="lable">
            <label for="comments">Message *</label>
        </div>
        <textarea  name="comments" rows="8" id="comments" class="span4"></textarea>

        <div class="lable">
            <label for="upload">Send Us Your CV *</label>
        </div>
        <input type="file" name="upload" id="upload" />

        <input type="submit" value="Submit" class="btn btn-success">
    </div>
</form>

此表单将提交给下面的php处理程序,邮件将在该处理程序中构建和发送:

代码语言:javascript
复制
<?php

    require_once("class.phpmailer.php");

    $first_name = $_POST['first_name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // required
    $comments = $_POST['comments']; // required

    echo "just got form values<br />";
    echo $_FILES['upload']['name'].'<br />';

    $email_message = "Form details below.<br />";

    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Name: ".clean_string($first_name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Contact: ".clean_string($telephone)."\n";
    $email_message .= "Message:\n".clean_string($comments)."\n";

    echo "added text to email<br />";

    $target_path = "uploads/";

    $target_path = $target_path . basename( $_FILES['upload']['name']); 

    // upload the file
    echo "target = ".$target_path."<br />";

    if (isset($_FILES['upload']['size']))
    {
        if ($_FILES['upload']['size'] > 0)
        {
        echo 'file size: '.basename($_FILES['upload']['size']).'<br />';
            if (move_uploaded_file($_FILES['upload']['name'], $target_path))
            {
                echo "The file ".  basename( $_FILES['upload']['name'])." has been uploaded<br />";
                                    // adding an already existing file as an attachment to the email for debugging purposes.
                $email->AddAttachment('uploads/CreditReportViewer.pdf');
            }
            else
            {
                echo "There was an error uploading the file, please try again!<br />&nbsp;".basename($_FILES['upload']['error']);
            }
        }
        else
        {
            echo "There was an error uploading the file, please try again!<br />";
        }
    }
    else
    {
        echo "No file was found for the upload.<br />";
    }


    $email = new PHPMailer();

    $email->To = "me@this.com";
    $email->From = $email_from;
    $email->FromName = $first_name;
    $email->Subject = "New Message from Website";
    $email->Body = $email_message;

    echo "\n mail built...<br />";

    $email->Send();

    echo "mail sent!";
?>

问题是没有设置$_FILES['upload']['name']。以下是正在写入浏览器的回显:

刚刚获得了表单值

已将文本添加到电子邮件

目标=上传/

未找到要上载的文件。

邮件已建立...

邮件已发送!

这让我认为我错误地引用了文件上传域或上传本身。

如果这不是最好的方法,有人能看到这里有什么问题或提供一些指导吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-28 15:49:59

你还得加上,

代码语言:javascript
复制
enctype= "multipart/form-data"

将表单更改为,

代码语言:javascript
复制
<form name="upload" method="post" action="send_form_email3.php" enctype= "multipart/form-data">
票数 46
EN

Stack Overflow用户

发布于 2013-02-28 15:49:11

enctype添加到表单:更改:

代码语言:javascript
复制
<form name="upload" method="post" action="send_form_email3.php">

代码语言:javascript
复制
<form name="upload" method="post" action="send_form_email3.php" enctype="multipart/form-data">
票数 7
EN

Stack Overflow用户

发布于 2015-04-14 00:23:55

另一个提示:如果upload_max_filesize (php.ini)小于用户选择的文件,则$_FILES将为空。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15130159

复制
相关文章

相似问题

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