2013-07-07 2 views
0

여러 파일 업로드에 PHP 코드를 사용했습니다. 잘 작동한다. 그러나 파일을 업로드하지 않고 제출 버튼을 클릭하면 성공 &이 데이터베이스에 값 0으로 저장되어 있습니다. "이미지를 업로드하십시오"라는 자바 스크립트 유효성 검사를 시도했습니다. 하지만 여전히 노력하고 ...다중 이미지 업로드 유효성 확인 javascript

아무도 도와 줄 수 있나요? 여기

> <?php 
    if(isset($_FILES['files'])){ 
    $errors= array(); 
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ 
     $file_name = $key.$_FILES['files']['name'][$key]; 
     $file_size =$_FILES['files']['size'][$key]; 
     $file_tmp =$_FILES['files']['tmp_name'][$key]; 
     $file_type=$_FILES['files']['type'][$key]; 
     if($file_size > 2097152){ 
      $errors[]='File size must be less than 2 MB'; 
     } 
     $query="INSERT into upload_data (`USER_ID`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$user_id','$file_name','$file_size','$file_type'); "; 
     $desired_dir="gallery"; 
     if(empty($errors)==true){ 
      if(is_dir($desired_dir)==false){ 
       mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
      } 
      if(is_dir("$desired_dir/".$file_name)==false){ 
       move_uploaded_file($file_tmp,"gallery/".$file_name); 
      }else{         //rename the file if another one exist 
       $new_dir="gallery/".$file_name.time(); 
       rename($file_tmp,$new_dir) ;    
      } 
      mysql_query($query) or die(mysql_error());   
     }else{ 
       print_r($errors); 
     } 
    } 
    if(empty($error)){ 
     echo "Success"; 
    } 
    } 
    ?> 

답변

0

당신은 바꿀 수 ... 코드 인 경우 (는 isset()) 만약에 (! 빈()) 첫 번째 줄에있는 모든 파일이 업로드되었는지 여부를 확인합니다.

당신이 < 입력 유형에 "필요한"매개 변수를 추가 할 수 있습니다 클라이언트 측에

=의 파일 >

내 첫번째 생각


아이디 제안을 다시 작성 예외 사용하는 스크립트를 :

<?php 
if(!empty($_FILES['files'])) 
{ 

    try 
    { 

     foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) 
     { 
      $file_name = $key.$_FILES['files']['name'][$key]; 
      $file_size =$_FILES['files']['size'][$key]; 
      $file_tmp =$_FILES['files']['tmp_name'][$key]; 
      $file_type=$_FILES['files']['type'][$key]; 

      if($file_size > 2097152) 
       throw new Exception('File size must be less than 2 MB'); 

      $query="INSERT into upload_data (`USER_ID`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) 
        VALUES(
        '". intval($user_id) ."', 
        '". stripslashes(mysql_real_escape_string($file_name)) ."', 
        '". intval($file_size). "', 
        '". stripslashes(mysql_real_escape_string($file_type)) ."'); "; 
      $desired_dir="gallery"; 

      if(is_dir($desired_dir)==false) 
      { 
       mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
      } 

      if(is_dir("$desired_dir/".$file_name)==false) 
      { 
       move_uploaded_file($file_tmp,"gallery/".$file_name); 
      } 
      else 
      { 
       //rename the file if another one exist 
       $new_dir="gallery/".$file_name.time(); 
       rename($file_tmp,$new_dir) ;    
      } 

      if (!mysql_query($query)) 
      throw new Exception(mysql_error()); 
     } 

     echo "Success"; 
    } 
    catch (Exception $e) 
    { 
     print_r($e->getMessage()); 
    } 
} 
else 
{ 
    echo "No files uploaded"; 
} 
+0

사용자 입력의 적절한 이스케이프에 대해 잊지 마세요 귀하의 mysql 쿼리. 내 대답을 – WooDzu

0

"이미지를 업로드하십시오"에 대한 자바 스크립트 유효성 검사를 일부 시도했습니다.

당신은 자바 스크립트 유효성 검사를 추가 할 수 있지만, 만약 브라우저 지원 H TML 5 Javascript API - FormData

자바 스크립트

http://jsfiddle.net/dimitardanailov/98VeF/1/

$(document).ready(function() { 
    if (window.FormData) { 
     $('input[type="file"]').bind({ 
      change : function() 
      { 
       var input = this, 
       files = input.files; 

       if (files.length > 0) { 
        var regExp = new RegExp('image.(jpeg|jpg|gif|png)', 'i'); 
        for (var i = 0; i < files.length; i++) 
        { 
         var file = file = files[i]; 
         var matcher = regExp.test(file.type); 

         if (!matcher) 
         { 
          alert('invalid file'); 
         } 
        } 
       } else { 
        alert('please add 1 file'); 
       } 
      } 
     }); 
    } else { 
     alert('Browser not support Formdata'); 
    } 
}); 
0
<script type="text/javascript"> 
    $(function() { 
     $('#Image').bind('change', function() { 
      var a=(this.files[0].size); 
      if((a/1048576) > 2.048) { 
       alert('Your file size should not exceed 2 Mb.'); 
      }; 
     }); 
     $('#btnSubmit').click(function() { 
      var fileExtension = ['png', 'jpg', 'jpeg']; 
      if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) { 
       alert("Only Png,jpeg and jpg image files allowed"); 
       return false; 
      } 
      else 
       return true; 
     }) 
    }) 
</script> 
+0

업데이 트했습니다 질문에 저장 코드 언급을 사용하지만 작동 doest 오전 –