检查用户是否选择了要上载的文件

时间:2015-11-13 16:20:52

标签: php

我正在尝试编写一个脚本,系统会在上传任何内容之前检查用户是否选择了要上传的文件。我遇到的问题是,即使我没有选择文件,系统也会回应文件已成功上传。请参阅以下代码:

<?php
include("dbconfig.php");

if(isset($_POST['btn-upload'])) {

    $loggedinuser = $_GET['bid'];   
    $file = $_FILES['file']['name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];

    $sql = mysqli_query($conn, "INSERT INTO upload (personalid, file, type, size) values ((select personalid from person where username='$loggedinuser'), '$file', '$file_type', '$file_size')") or die (mysqli_error($conn));

    if($sql){
        header("location:upload.php?msg0=Document upload successful.");     
    } elseif( !file_exists($_FILES['file']['name']) || !is_uploaded_file($_FILES['file']['name']) ) {
        header("location:upload.php?msg1=Document upload failed.");
    }
}
?>
<!-- need to comment -->

更新版本 - 16:34(2015年11月13日)

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include("dbconfig.php");
if(isset($_POST['btn-upload'])){

if (empty($_FILES['file']['name'])){

    echo 'error!';

} else {

$loggedinuser = $_GET['bid'];

$file = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$sql = mysqli_query($conn, "INSERT INTO upload (personalid, file, type, size) values ((select personalid from person where username='$loggedinuser'), '$file', '$file_type', '$file_size')") or die (mysqli_error($conn));

if($sql){
    header("location:upload.php?msg0=Document upload successful.");     
}
else {
    header("location:upload.php?msg1=Document upload failed.");
}
}
}


 ?>
<!-- need to commentt -->

我已经在线完成了一些研究,并且我遇到了一些提及你可以file_existsis_uploaded_file的讨论 - 我不确定我是否正确使用它们。请告诉我如何在上传之前检查用户是否选择了文件。

谢谢,

苏海尔。

1 个答案:

答案 0 :(得分:0)

目前,只有当按钮被推送为POST请求时,您的语句才会生效。

我不是百分之百,但我准备尝试回答这个问题。

$loggedinuser = $_GET['bid'];
if (isset($_FILES['file']['name']) && !empty($_FILES['file']['name'])) {
    $file = $_FILES['file']['name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
}

if (isset($file) && isset($file_size) && isset(file_type)) {    
  SQL stuff;
}

if(isset($sql) && $sql){
    header("location:upload.php?msg0=Document upload successful.");     
} else {
    header("location:upload.php?msg1=Document upload failed.");
}

另外,您是否可以确保HTML中需要该字段?