Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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
Javascript 带文件上传的多步骤表单_Javascript_Php_Jquery_Mysql_File Upload - Fatal编程技术网

Javascript 带文件上传的多步骤表单

Javascript 带文件上传的多步骤表单,javascript,php,jquery,mysql,file-upload,Javascript,Php,Jquery,Mysql,File Upload,我有一个多步骤的表格。我想在这里实现的是允许用户使用jquery.validate插件上传带有验证的文件,并将文件存储到mySQL数据库中 以前,我没有使用多步骤表单设计,而是一步一页的设计,因此当用户单击提交按钮时,我会使用ifisset$\u POST['submit']和$\u文件通过PHP验证文件。下面是当用户单击submit按钮时将触发的PHP代码 if(isset($_POST['submit'])) { $allowedExts = array("mov", "mp4

我有一个多步骤的表格。我想在这里实现的是允许用户使用jquery.validate插件上传带有验证的文件,并将文件存储到mySQL数据库中

以前,我没有使用多步骤表单设计,而是一步一页的设计,因此当用户单击提交按钮时,我会使用ifisset$\u POST['submit']和$\u文件通过PHP验证文件。下面是当用户单击submit按钮时将触发的PHP代码

if(isset($_POST['submit']))
{   
    $allowedExts = array("mov", "mp4", "mpeg", "wmv");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if ((($_FILES["file"]["type"] == "video/quicktime") || ($_FILES["file"]["type"] == "video/mp4") || ($_FILES["file"]["type"] == "video/mpeg") || ($_FILES["file"]["type"] == "video/x-ms-wmv")) && in_array($extension, $allowedExts) && (!empty($_POST["title"])) && (!empty($_POST["description"])))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Error: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
                 // check if the file already exist in Uploaded folder
            if (file_exists("uploaded/".$_FILES["file"]["name"]))
            {
                echo $_FILES["file"]["name"]." already exists. ";
            }
            else
            {
                echo "<br />".$_FILES["file"]["name"]." has been uploaded! <br /><br />";
                echo "Upload: ".$_FILES["file"]["name"]."<br />";
                echo "Type: ".$_FILES["file"]["type"]."<br />";
                echo "Size: ".($_FILES["file"]["size"] / 1024)." kB<br />";
                echo "Stored in: "."uploaded/".$_FILES["file"]["name"];
                move_uploaded_file($_FILES["file"]["tmp_name"], "uploaded/".$_FILES["file"]["name"]);
                $name = $_FILES["file"]["name"];
                $url = "";      //some URL
                mysql_query("INSERT INTO video (name, title, description, url) VALUES ('$name', '$title', '$description', '$url')") or die(mysql_error());
            }
        }
    }
    else
    {
        if (!empty($_POST["description"]) && (!empty($_POST["title"])))
        {
            echo "Invalid file";
        }   
    }
} 
但现在,由于我已经将设计更改为多步骤形式,这种逻辑似乎不再有效。这是我的

我想把上传按钮的类型从type=button改为type=submits,这样我就可以使用我以前的PHP逻辑来处理文件并上传到数据库,但是这会导致我的多步骤表单停止进入下一步


有什么好主意或建议吗?

如果您想避免重新加载页面,可以尝试通过隐藏的iframe发布表单,然后在加载时阅读响应。据我所知,这应该适用于所有浏览器

<iframe name="target_iframe">..</iframe>

<form target="target_iframe">..</form>
退房

如果您愿意放弃对旧浏览器的支持,您可以使用ajax发布文件。也许退房