2017-03-13 25 views
0

こんにちは私は私のmysqlとサーバーに1つのイメージをアップロードしたい場合、うまく動作するコードを持っています。複数の画像をアップロードする方法を教えてください。

PHPコード:

if(isset($_POST['btnsave'])) 
{ foreach($_FILES['user_image']['tmp_name'] as $key => $tmp_name){ 

    $username = $_POST['user_name']; 
    $userjob = $_POST['user_job']; 

    $imgFile = $key.$_FILES['user_image']['name'][$key]; 
    $tmp_dir = $_FILES['user_image']['tmp_name'][$key]; 
    $imgSize = $_FILES['user_image']['size'][$key]; 
} 

    if(empty($username)){ 
     $errMSG = "Please Enter Username."; 
    } 
    else if(empty($userjob)){ 
     $errMSG = "Please Enter Your Job Work."; 
    } 
    else if(empty($imgFile)){ 
     $errMSG = "Please Select Image File."; 
    } 
    else 
    { 
     $upload_dir = 'user_images/'; 
     $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); 
     $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); 
     $userpic = rand(1000,1000000).".".$imgExt; 
     if(in_array($imgExt, $valid_extensions)){   
      if($imgSize < 5000000)    { 
       move_uploaded_file($tmp_dir,$upload_dir.$userpic); 
      } 
      else{ 
       $errMSG = "Sorry, your file is too large."; 
      } 
     } 
     else{ 
      $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";   
     } 
    } 
    if(!isset($errMSG)) 
    { 
     $stmt = $DB_con->prepare('INSERT INTO tbl_users(userName,userProfession,userPic) VALUES(:uname, :ujob, :upic)'); 
     $stmt->bindParam(':uname',$username); 
     $stmt->bindParam(':ujob',$userjob); 
     $stmt->bindParam(':upic',$userpic); 

     if($stmt->execute()) 
     { 
      $successMSG = "new record succesfully inserted ..."; 
      header("refresh:5;index.php"); 
     } 
     else 
     { 
      $errMSG = "error while inserting...."; 
     } 
    } 
} 

HTMLコード:

<?php 
if(isset($errMSG)){ 
     ?> 
     <div class="alert alert-danger"> 
      <span class="glyphicon glyphicon-info-sign"></span> <strong><?php echo $errMSG; ?></strong> 
     </div> 
     <?php 
} 
else if(isset($successMSG)){ 
    ?> 
    <div class="alert alert-success"> 
      <strong><span class="glyphicon glyphicon-info-sign"></span> <?php echo $successMSG; ?></strong> 
    </div> 
    <?php 
} 
?> 

<form method="post" enctype="multipart/form-data" class="form-horizontal"> 

    <table class="table table-bordered table-responsive"> 

    <tr> 
     <td><label class="control-label">Username.</label></td> 
     <td><input class="form-control" type="text" name="user_name" placeholder="Enter Username" value="<?php echo $username; ?>" /></td> 
    </tr> 

    <tr> 
     <td><label class="control-label">Profession(Job).</label></td> 
     <td><input class="form-control" type="text" name="user_job" placeholder="Your Profession" value="<?php echo $userjob; ?>" /></td> 
    </tr> 

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

    <tr> 
     <td colspan="2"><button type="submit" name="btnsave" class="btn btn-default"> 
     <span class="glyphicon glyphicon-save"></span> &nbsp; save 
     </button> 
     </td> 
    </tr> 

    </table> 

</form> 

どのように私はそれが複数のアップロードに使用するコードすることができますか?私がアップロードするすべての画像については、私のサーバ上のファイルに同じ名前の 'userPic'以外の同じ値を設定します。私を助けてくれますか?

こんにちは、もう1つ問題が見つかりました。多分あなたたちは私を助けることができますか?

私が例6の画像をアップロードしようとしている場合、テーマの1つはそのポップアップの最大サイズよりも大きく、アップロードフォルダに入る直前にアップロードされたすべてのファイルです。エラーが発生した場合、このファイルを削除するにはどうすればよいですか?

2番目の質問は画像のサイズを変更する方法ですか?任意のコード?

答えて

0

foreachブロック内にすべてを入れます。

if(isset($_POST['btnsave'])) 
{ foreach($_FILES['user_image']['tmp_name'] as $key => $tmp_name){ 

$username = $_POST['user_name']; 
$userjob = $_POST['user_job']; 

$imgFile = $key.$_FILES['user_image']['name'][$key]; 
$tmp_dir = $_FILES['user_image']['tmp_name'][$key]; 
$imgSize = $_FILES['user_image']['size'][$key]; 


if(empty($username)){ 
    $errMSG = "Please Enter Username."; 
} 
else if(empty($userjob)){ 
    $errMSG = "Please Enter Your Job Work."; 
} 
else if(empty($imgFile)){ 
    $errMSG = "Please Select Image File."; 
} 
else 
{ 
    $upload_dir = 'user_images/'; 
    $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); 
    $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); 
    $userpic = rand(1000,1000000).".".$imgExt; 
    if(in_array($imgExt, $valid_extensions)){   
     if($imgSize < 5000000)    { 
      move_uploaded_file($tmp_dir,$upload_dir.$userpic); 
     } 
     else{ 
      $errMSG = "Sorry, your file is too large."; 
     } 
    } 
    else{ 
     $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";   
    } 
} 
if(!isset($errMSG)) 
{ 
    $stmt = $DB_con->prepare('INSERT INTO tbl_users(userName,userProfession,userPic) VALUES(:uname, :ujob, :upic)'); 
    $stmt->bindParam(':uname',$username); 
    $stmt->bindParam(':ujob',$userjob); 
    $stmt->bindParam(':upic',$userpic); 

    if($stmt->execute()) 
    { 
     $successMSG = "new record succesfully inserted ..."; 
     header("refresh:5;index.php"); 
    } 
    else 
    { 
     $errMSG = "error while inserting...."; 
    } 
} 
}} 
+0

ありがとうございました!それは素晴らしい作品です! – user3357181

+0

もう1つの質問があります。複数のアップロードを行う場合、イメージのサイズを変更することは可能ですか?どうやってするか? – user3357181

+0

@ user3357181 ImageMagickまたはGDライブラリを使用してイメージのサイズを変更します。 –

関連する問題