使用php选择文件时自动提交上传表单?

时间:2018-02-12 09:22:12

标签: php html forms input file-upload

我在自己的网站上有一个简单的upload profile avatar form,我想在选择图片后自动上传.. 我尝试使用onchange()

JS:

document.getElementById("file").onchange = function() {
  document.getElementById("form").submit();
};

Jquery的:

$('#file').change(function() {
  $('#target').submit();
});

HTML:

<input type="file" name="file" onchange="form.submit()">

但由于一些奇怪的原因,它不适用于我的upload.php页面,在选择文件之后它只是重定向到upload.php而没有让它的代码工作,显示一个空白页面。

如果这是我的upload.php代码:

<?php

include_once 'includes/dbh.inc.php';
include_once 'includes/vars.inc.php';

if (isset($_POST['submit'])) {
    $file = $_FILES['file'];

    $fileNAME = $_FILES['file']['name'];
    $fileTYPE = $_FILES['file']['type'];
    $fileTMPNM = $_FILES['file']['tmp_name'];
    $fileERROR = $_FILES['file']['error'];
    $fileSIZE = $_FILES['file']['size'];


    $fileEXT = explode('.', $fileNAME);
    $fileACTUALEXT = strtolower(end($fileEXT));

    $fileALLOWED = array('jpg', 'jpeg', 'png', 'gif');

    if (in_array($fileACTUALEXT, $fileALLOWED)) {
        if ($fileERROR === 0) {
            if ($fileSIZE < 5000000) {
                $fileNEWNAME = $userUID."-avatar.".$fileACTUALEXT;
                $fileROOT = 'content/uploads/'.$fileNEWNAME;
                move_uploaded_file($fileTMPNM, $fileROOT);
                $sql = "UPDATE user_meta SET um_avatar_status=0 WHERE um_user_id='$userID';";
                $result = mysqli_query($conn, $sql);
                header('Location: '.$siteurl.'/user/'.$userUID.'?editavatar=success');
            } else {
                echo "The file you are trying to upload is TOO big!";
            }

        } else {
            echo "Oops! there was an unknown ERROR, please try again later.";
        }

    } else {
        echo "you can't upload this type of files!";
    }

}

?>

2 个答案:

答案 0 :(得分:0)

在upload.php之上添加此内容以查看php错误,您可以在

中找出错误发生位置。
<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL); 

答案 1 :(得分:0)

您需要使用if (isset($_file['submit'])) {

更改此部分if (isset($_FILES['file'])) {
  

$ _ POST包含表单中的所有数据(文件除外)。

     

$ _ FILES包含通过表单发送到服务器的所有文件(仅限于)

 <?php

   include_once 'includes/dbh.inc.php';
   include_once 'includes/vars.inc.php';

    if (isset($_FILES['file'])) {


        $file = $_FILES['file'];

        $fileNAME = $_FILES['file']['name'];
        $fileTYPE = $_FILES['file']['type'];
        $fileTMPNM = $_FILES['file']['tmp_name'];
        $fileERROR = $_FILES['file']['error'];
        $fileSIZE = $_FILES['file']['size'];


        $fileEXT = explode('.', $fileNAME);
        $fileACTUALEXT = strtolower(end($fileEXT));

        $fileALLOWED = array('jpg', 'jpeg', 'png', 'gif');

        if (in_array($fileACTUALEXT, $fileALLOWED)) {
            if ($fileERROR === 0) {
                if ($fileSIZE < 5000000) {
                    $fileNEWNAME = $userUID."-avatar.".$fileACTUALEXT;
                    $fileROOT = 'content/uploads/'.$fileNEWNAME;
                    move_uploaded_file($fileTMPNM, $fileROOT);
                    $sql = "UPDATE user_meta SET um_avatar_status=0 WHERE um_user_id='$userID';";
                    $result = mysqli_query($conn, $sql);
                    header('Location: '.$siteurl.'/user/'.$userUID.'?editavatar=success');
                } else {
                    echo "The file you are trying to upload is TOO big!";
                }

            } else {
                echo "Oops! there was an unknown ERROR, please try again later.";
            }

        } else {
            echo "you can't upload this type of files!";
        }

    }

    ?>