从html表单获取表单数据以及文件

时间:2019-05-25 23:41:04

标签: php html

我做了一个非常简单的网页。它需要一个文件,并将其上传到/ home / public_html / php / uploads中的我的网页。

我还希望获得一些简单的数据,姓氏,名字,电子邮件,消息。

我已经可以做这两个事情。我看不到如何将它们以一种形式组合。

这是我从here获得的,它会上传文件。如何修改它以获取数据?

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{
  if (is_uploaded_file($_FILES['my_upload']['tmp_name'])) 
  { 
    //First, Validate the file name
    if(empty($_FILES['my_upload']['name']))
    {
        echo " File name is empty! ";
        exit;
    }

    $upload_file_name = $_FILES['my_upload']['name'];
    //Too long file name?
    if (strlen($upload_file_name)>100)
    {
        echo " too long file name ";
        exit;
    }

    //replace any non-alpha-numeric cracters in th file name
    $upload_file_name = preg_replace("/[^A-Za-z0-9 \.\-_]/", '', $upload_file_name);

    //set a limit to the file upload size
    if ($_FILES['my_upload']['size'] > 1000000) 
    {
        echo " too big file ";
        exit;        
    }

    //Save the file
    $dest=__DIR__.'/uploads/'.$upload_file_name;
    if (move_uploaded_file($_FILES['my_upload']['tmp_name'], $dest)) 
    {
        echo 'File Has Been Uploaded !';
    }
  }
}
?>

上面的代码有效,它可以上传文件。

这就是我将普通数据发送到电子邮件的方式。

<?php

$q1 = $_POST['surname'];
$q2 = $_POST['name'];
$q3 = $_POST['email'];
$q4 = $_POST['message'];

for ($i=1; $i <= 4; $i++) {

    if (${"q$i"} == '') ${"q$i"} = 'X'; 
}

$body = "

".$q1."
".$q2."
".$q3."
".$q4."
";

$to1 = "myemail@foxmail.com";
$subject = $q2 . $q1 . "query";
$headers = "From: peter@sendamail.com\r\n";
$headers .= 'Content-Type: text/plain; charset=utf-8';
mail($to1, $subject, $body, $headers);
header("Location: email_success.php");
?>

如何保存$ q1至$ q4并写入/ home / public_html / php / uploads中的文本文件?

最好,该文本文件的名称应与上载文件+“数据”的名称相同

编辑:这是一个简单的表格。此表单成功上传了我选择的任何文件。 (到目前为止,我只尝试了小的文本文件。)我还可以使用Python获取文件,然后在笔记本电脑上打开它。没问题。

我的问题是:表单数据在哪里?它不在服务器上的文件夹中。另外,服务器上的php文件夹错误日志中没有错误。

<html lang="en">
<head>
<Title>File Upload Tutorial</Title>
</head>
<body>
<form method="POST" name="uploadFileandData" action="php/upload1file.php" enctype="multipart/form-data">

<label for='surname'>Surname: </label> <input type="text" name="surname" > <br><br>
<label for='name'>Name: </label> <input type="text" name="name" > <br><br>
<label for='email'>Email: </label> <input type="text" name="email" > <br><br>
<label for='message'>Message:</label>   <textarea name="message"></textarea><br><br>
<label for="my_upload">Select the file to upload:</label> <input id="my_upload" name="my_upload" type="file"><br><br>

<input type="submit" value="Submit" name='submit'><br>

    </form>

    </body>
    </html>

我每周都会收到200多封来自学生的电子邮件。它们都包含来自表单,作业的数据。这非常好用。

现在我想以这种方式收集书面作业,但是我也需要数据。

如何获取?

1 个答案:

答案 0 :(得分:0)

在您发布的教程中,您将对此进行更改:

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

    <!--Content will go inside here.-->

    <input name="file1" type="file">

    <input type="submit" value="Upload Now">

</form>

看起来像这样:

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

    First Name: <input name="name" type="text" placeholder="Name" />
    <br />
    Last Name : <input name="surname" type="text"  placeholder="Surname"/>
    <br />
    Email Addr: <input name="email" type="text"  placeholder="email"/>
    <br />
    Message: <textarea name="message" placeholder="Type your message here"></textarea>
    <br />
    <br />
    <input name="file1" type="file">

    <input type="submit" value="Upload Now">

</form>