2017-05-08 102 views
2

如何使用这个脚本还 我要让输入文件和数据库不需要上传多个文件PDO

你怎么想上传多个文件的数据库?脚本是否受到保护?

这里是我的PHP PDO脚本:

 $file   = $_FILES['file']; 
     $fileName  = $_FILES['file']['name']; 
     $fileTmpName = $_FILES['file']['tmp_name']; 
     $fileSize  = $_FILES['file']['size']; 
     $fileError = $_FILES['file']['error']; 
     $fileType  = $_FILES['file']['type']; 

     $fileExt = explode('.', $fileName); 
     $fileActualExt = strtolower(end($fileExt)); 
     $allowed = array('jpg', 'jpeg', 'png', 'pdf'); 
    $formErrors = array(); 
     if (in_array($fileActualExt, $allowed)) { 
      if ($fileError === 0) { 
      if ($fileSize < 1000000) { 

       $fileNameNew = uniqid('', true).".".$fileActualExt; 
       $fileDestination = 'images/' .$fileNameNew; 
       move_uploaded_file($fileTmpName, $fileDestination); 
      } else { 
       $formErrors[] = "file size must be under 2mb"; 
      } 
      } else { 
      $formErrors[] = 'error'; 
      } 
     } else { 
      $formErrors[] 'file not uploaded..!'; 
     } 

这里的HTML:

<tr> 
    <td><label class="control-label">Profile Img.</label></td> 
    <td><input class="input-group" type="file" name="file" multiple accept="image/*" /></td> 
</tr> 

插入到数据库

   if (empty($formErrors)) { 
       $stmz = $con->prepare("INSERT INTO reports(title, username, email, mobile, repdate,photo, descr) 
                VALUE(:ztitle, :zusername, :zemail, :zmobile, NOW(), :uphoto, :zdescr)"); 
       $stmz->execute(array(

       'ztitle' => $title, 
       'zusername' => $username, 
       'zemail' => $email, 
       'zmobile' => $mobile, 
       'uphoto' => $fileNameNew, 
       'zdescr' => $descr 
       )); 
      /* echo "<meta http-equiv='refresh' content='0'>"; */ 
       if ($stmz) { 

      echo '<script language="javascript">'; 
      echo 'alert("your report Added")'; 
      echo '</script>'; 
      echo '<div class="alert alert-danger">your report Added</div>'; 
       } 

      } else { 
      echo '<script language="javascript">'; 
      echo 'alert("your report not Added")'; 
      echo '</script>'; 
      echo '<div class="alert alert-danger">your report not Added</div>'; 

      } 
+0

我不知道你在问什么。你在问如何处理来自多个文件输入的数据,或者如何向数据库添加多个数据? – Manngo

+0

和数据库不需要?这意味着什么? – Exprator

+0

@manngo我的意思是文件上传字段不是强制性的 另外我想修改代码成多重上传 –

回答

1

当你上传多个文件,那么你应该创建一个数组为多个文件。 name =“file []”

我建议你使用这个基本的类来上传多个文件。

https://github.com/AzCreativeWorld/Dropzone-with-Image-Resizer

酪氨酸这样多上传。

foreach($_FILES['files']['name'] as $val) 
     { 
      $s++; 
      $filesName  = str_replace(" ","",trim($_FILES['files']['name'][$n])); 
      $files   = explode(".",$filesName); 
      $File_Ext  = substr($_FILES['files']['name'][$n], strrpos($_FILES['files']['name'][$n],'.')); 

      if($File_Ext==".png" || $File_Ext==".jpeg" || $File_Ext==".gif" || $File_Ext==".jpg") 
      { 
       $srcPath = 'uploads/'; // your DIR name 
       $path  = trim($srcPath.$fileName); 
       move_uploaded_file($_FILES['files']['tmp_name'][$n], $path) 
       {     
        // insertion query here success 
       }else{ 
        // file not move to the destination 
       } 
      } 
      else 
      { 
       //extention not valid 
      } 
      $n++; 
     } 
+0

感谢您的帮助,并且有什么问题 解析错误:语法错误,意外'}' 可以吗编辑代码要匹配数据库 这是我的代码 $ stmz = $ con> prepare(“INSERT INTO reports(title,username,email,mobile,repdate,photo,descr)VALUE(:ztitle,:zusername,: zemail,:zmobile,NOW(),:uphoto,:zdescr)“); $ stmz->执行(阵列( 'ztitle'=> $标题, 'zusername'=> $用户名, 'zemail'=> $电子邮件, 'zmobile'=> $移动, 'uphoto'= > $ path, 'zdescr'=> $ descr )); –

0

此脚本https://github.com/e-ht/cautious-rotary-phone显示了多个文件的完整上载和数据库日志过程。它使用PHP7,JS/AJAX和MySQL。

这里的多文件上传表单处理一个JS代码片段:

// Support for sending multiple files 
    for (var i = 0; i < files.length; i++) { 
     var file = files[i]; 
     formData.append('files', file, file.name); 
    }