PHP - 具有多个不同文件输入的用户配置文件

时间:2017-02-02 10:44:02

标签: php file upload

所以我对此进行了很多搜索,但找不到任何好的答案。 我有一个hrm,在那里我添加用户,每个人都有他们的信息,如姓名,年龄,地址等。 我还添加了几个文件,如:图像,身份证(jpg / pdf),税卡(pdf),协议文件(pdf),还有其他几个。

这些文档中的每一个都有其单独的输入字段,每个文档都将上载到服务器上的不同文件夹中。我得到了它的工作,但我不确定我的方法是否正确:

基本信息(这里有很多输入,所以我不会全部列出):

    if(isset($_POST['btnsave'])){

    $id  = $_POST['w_rid'];
    $name  = $_POST['w_name'];
    $surname  = $_POST['w_surname'];
    $position  = $_POST['w__position'];

在这些信息之后,我上传了文件:

    $userID = $_FILES['user_id']['name'];
    $id_tmp_dir = $_FILES['user_id']['tmp_name'];
    $idSize = $_FILES['user_id']['size'];

    $userTaxCard = $_FILES['user_taxcard']['name'];
    $taxCard_tmp_dir = $_FILES['user_taxcard']['tmp_name'];
    $taxCardSize = $_FILES['user_taxcard']['size'];

    $userAgreement = $_FILES['user_agreement']['name'];
    $agreement_tmp_dir = $_FILES['user_agreement']['tmp_name'];
    $agreementSize = $_FILES['user_agreement']['size'];

    $imgFile = $_FILES['user_image']['name'];
    $img_tmp_dir = $_FILES['user_image']['tmp_name'];
    $imgSize = $_FILES['user_image']['size'];

目前我有18种不同的文件上传输入,名称不同

现在我有了上传文件的部分,对于这18个文件输入中的每一个,我都有这个代码块,我只是重复并替换名称:

  if($_FILES['user_id']['error'] == 0) {

  $upload_dir_id = 'user_id/';

  $idExt = strtolower(pathinfo($userID,PATHINFO_EXTENSION));
  $valid_extensions_id = array('pdf'); // valid extensions
  $userid = $name . "-id-" . rand(1000,1000000).".".$idExt;

  if(in_array($idExt, $valid_extensions_id)){

    if($idSize < 5000000)        {

      move_uploaded_file($id_tmp_dir,$upload_dir_id.$userid);
    }
    else{
      $errMSG = "Sorry, your file is too large.";
    }
  }
  }

您可以想象代码有多大

这是最后一块代码:

    // if no error occured, continue ....
    if(!isset($errMSG))
    {
        $stmt = $DB_con->prepare('INSERT INTO Radnici2(id, name, surname, position, userTaxCard, userAgreement, imgFile, userID) VALUES(:urid, :uime, :uprezime, :uroditelj, :usprema, :uzdravlje, :uljekarski, :upradnika)');

        $stmt->bindParam(':uid',$id);
        $stmt->bindParam(':uname',$name);    
        $stmt->bindParam(':usurname',$surname);
        $stmt->bindParam(':uposition',$position);;
        $stmt->bindParam(':utaxc',$usertaxc);
        $stmt->bindParam(':uagreement',$useragreement);
        $stmt->bindParam(':upic',$userpic);

        if($stmt->execute())
        {
            $successMSG = "Success";
            header("refresh:3;index.php"); // redirects image view page after 5 seconds.
        }
        else
        {
            $errMSG = "Error....";
        }
    }

这是上传文件的有效方法吗?它并不觉得我所做的是正确的,或者它可以大大改进。 有没有更好的方法? 谢谢。

0 个答案:

没有答案