Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP可以';t从HTML表单上载文件_Php_Html_File Upload_File Io - Fatal编程技术网

PHP可以';t从HTML表单上载文件

PHP可以';t从HTML表单上载文件,php,html,file-upload,file-io,Php,Html,File Upload,File Io,这是我处理表格的方式: # Create the message # ---------------------------------------------------------------- $name = $_POST['name']; $email = $_POST['email']; $title = $_POST['title']; $course = $_POST['course']

这是我处理表格的方式:

        # Create the message
        # ----------------------------------------------------------------
        $name = $_POST['name'];
        $email = $_POST['email'];
        $title = $_POST['title'];
        $course = $_POST['course'];
        $file = $_POST['file'];

        $message  = "Name: ".$name."\n";
        $message .= "Email: ".$email."\n\n";
        $message .= "Title of Article: ".$title."\n";
        $message .= "Program: ".$course."\n\n";
        $message .= "Additional Info: ".$info;

        # Upload temporary files
        # ----------------------------------------------------------------
        $uploaddir = '/home/public/uploads/';
        $uploadfile = $uploaddir . basename($_FILES['file']['name']);
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile) == false) {
            echo 'Could not move file';
            exit;
        }

        if ($_FILES['file']['type'] != "application/pdf") {
            echo 'Not a pdf file';
            unlink($uploadfile);
            exit;
        }

最终产品有望发送一封电子邮件,并将该文件作为附件。现在我失败了,收到了内置的“无法移动文件”消息。有什么明显的原因吗
$file
是我从HTML文件对话框中获得的(
input type=“file”

您的表单需要设置相应的
enctype
属性,即

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

更新 一些建议

  • 在移动上载的文件之前,请检查文件类型并执行任何其他常规验证。那应该是你的最后一步了
  • 我现在记不清了,但我认为在
    $\u POST['file']
    值中你不会得到任何有用的东西(或根本没有)。对于所有上载的文件数据,请使用
    $\u FILES
    数组
  • 两件事:
    1.表格是否设置为:

    <form method="POST" enctype="multipart/form-data" action="INSERT ACTION">
    
    
    

    二,。您将文件发布到的文件夹是否设置为777?

    是的,我将该文件夹设置为777,添加了enctype,我正在解决几个语法错误。我想这可能就是问题所在。我第二次添加enctype时,似乎没有任何内容存储在$\u POST中。。。。这正常吗?是的。您需要使用$_文件[“”]@杰克,他仍然应该在
    $\u POST
    中获取其他表单数据。另外,它是
    $\u文件
    (复数)@Phil-Hmm,实际上现在我想起来了,这是真的。古怪的是的,他是对的,这是
    $\u文件
    很抱歉弄错了。谢谢你提供的信息,我至少会用regex检查扩展名。关于我在下面发表的评论,你有什么想法吗?@Max你不需要改变你的验证方法,只要把“PDF检查”块移到“移动上传的文件”块上面就行了是的,我刚刚完成了代码。它的工作完美无瑕,谢谢:)我正在执行所有检查之前,我上传文件。