2016-04-18 2 views
0

Вот моя проблема. Я попытался загрузить изображение, и я хранил изображения в соответствующей папке и пути изображения в базе данных с помощью этого URL-адреса.Загрузить изображение с помощью ajax и PHP

http://www.lionblogger.com/how-to-upload-file-to-server-using-php-save-the-path-in-mysql/.

Когда я попытался таким образом, я получу правильный ответ. После того, как я попытался использовать тот же код с AJAX, он работает неправильно. Я не знаю, какую ошибку я сделал. Ниже мой код.

HTML код

<div class="input-group form-group"> 
<label> Upload Your Photo </label>        
<input type="file" name="upload_photo" id="upload_photo"> 
</div> 
<div class=""> 
<input type="submit" class="btn btn-success btn-lg " name="upload_files" id="upload_files" value="UPLOAD" > 
</div> 

AJAX код

$("#upload_files").click(function(event){ 
     event.preventDefault(); 
     var upload_photo1 = $('#upload_photo').val(); 
     var photo= upload_photo1.split('\\').pop().split('/').pop(); 
     var datas="photo="+photo; 
    alert(datas); 
    if(photo==''){ 
     sweetAlert({ 
     title: "WARNING!!!", 
     text: "Please Upload All Corresponding Documents And Try Again !!!!", 
     type: "warning" 
     }); 
    } else { 
    $.ajax({ 
     type: "POST", 
     url: 'php/upload_files.php', 
     data:datas 
     }).done(function(data) { 
      alert(data); 
     }); 
    } 
}); 

И мой файл PHP Upload_files.php

<?php 
    $fileExistsFlag = 0; 
    $fileName = $_POST['photo']; 
    var_dump($fileName); 
    $link = mysqli_connect("localhost","root","","spark") or die("Error ".mysqli_error($link)); 

    $query = "SELECT filename FROM filedetails WHERE filename='$fileName'"; 
    $result = $link->query($query) or die("Error : ".mysqli_error($link)); 
    while($row = mysqli_fetch_array($result)) { 
     if($row['filename'] == $fileName) { 
      $fileExistsFlag = 1; 
     }  
    } 

    if($fileExistsFlag == 0) 
    { 
     $target = "files/";  
     $fileTarget = $target.$fileName;  
     $tempFileName = $_FILES["fileName"]["tmp_name"]; 
     $fileDescription = $_POST['Description']; 
     $result = move_uploaded_file($tempFileName,$fileTarget); 
     $ext = end(explode('.', $fileName)); 
     if ($_FILES["fileName"]["size"] > 2097152) 
     { 
     echo "Sorry, your file is too large."; 
     $uploadOk = 0; 
     } 
     else if($ext != "jpg" && $ext != "png" && $ext != "jpeg"&& $ext != "gif") 
     { 
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
     $uploadOk = 0; 
     } 
    else 
    { 
     if($result) { 
      echo "Your file <html><b><i>".$fileName."</i></b></html> has been successfully uploaded";  
      $query = "INSERT INTO filedetails(filepath,filename,description) VALUES ('$fileTarget','$fileName','$fileDescription')"; 
      $link->query($query) or die("Error : ".mysqli_error($link));    
     } 
     else {   
      echo "Sorry !!! There was an error in uploading your file";   
     } 
    } 
     mysqli_close($link); 
    } 

    else { 
     echo "File <html><b><i>".$fileName."</i></b></html> already exists in your folder. Please rename the file and try again."; 
     mysqli_close($link); 
    } 
?> 

Ошибка, что им получаю enter image description here

Примите мои сомнения .. Новичок PHP.Kindly Помогите мне решить эту проблему.

+0

Возможный дубликат [ jquery ajax Загрузка файла php] (http://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php) – Shadow

+0

Вы отправляете только имя файла (если есть) в свой запрос ajax, а не содержимое файла. См. Связанную тему для примера кода для загрузки файлов. – Shadow

ответ

1

У вас есть серьезные проблемы с кодом в js и php. Вы не загрузили файл вообще. Вы только что загрузили имя файла. В качестве входных данных нет описания, но в вашем PHP-коде у вас есть переменная описания, необработанная. Вы обработали файл с неправильным именем.
Попробуйте загрузить файл с помощью FormData. Во-первых, используйте форму тег с идентификатором

<form id='myform'> 
<div class="input-group form-group"> 
<label> Upload Your Photo </label>        
<input type="file" name="upload_photo" id="upload_photo"> 
</div> 
<div class=""> 
<input type="submit" class="btn btn-success btn-lg " name="upload_files" id="upload_files" value="UPLOAD" > 
</div> 
</form> 

и в JS,

formData = new FormData($("#myForm")[0]); 
    formData.append("photo", photo);//your photo name 

и в запросе AJAX, написать

data: formData, 

и в файле PHP

<?php 
$fileExistsFlag = 0; 
$fileDescription ='No idea where this came from'; 
$fileName = $_POST['photo']; 
$link = mysqli_connect("localhost","root","","spark") or die("Error ".mysqli_error($link)); 

$query = "SELECT filename FROM filedetails WHERE filename='$fileName'"; 
$result = $link->query($query) or die("Error : ".mysqli_error($link)); 
while($row = mysqli_fetch_array($result)) { 
    if($row['filename'] == $fileName) { 
     $fileExistsFlag = 1; 
    }  
} 

if($fileExistsFlag == 0) 
{ 
    $target = "files/";  
    $fileTarget = $target.$fileName;  
    $tempFileName = $_FILES["upload_photo"]["tmp_name"]; 
    $result = move_uploaded_file($tempFileName,$fileTarget); 
    $ext = end(explode('.', $fileName)); 
    if ($_FILES["upload_photo"]["size"] > 2097152) 
     { 
     echo "Sorry, your file is too large."; 
     $uploadOk = 0; 
     } 
    else if($ext != "jpg" && $ext != "png" && $ext != "jpeg"&& $ext != "gif") 
    { 
     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
     $uploadOk = 0; 
    } 
else 
{ 
    if($result) { 
     echo "Your file <html><b><i>".$fileName."</i></b></html> has been successfully uploaded";  
     $query = "INSERT INTO filedetails(filepath,filename,description) VALUES ('$fileTarget','$fileName','$fileDescription')"; 
     $link->query($query) or die("Error : ".mysqli_error($link));    
    } 
    else {   
     echo "Sorry !!! There was an error in uploading your file";   
    } 
} 
    mysqli_close($link); 
} 

else { 
    echo "File <html><b><i>".$fileName."</i></b></html> already exists in your folder. Please rename the file and try again."; 
    mysqli_close($link); 
} 
?> 
+0

в js-файле, что это за фотография .. Я получил ошибку в этой строке –

+0

Uncaught ReferenceError: фотография не определена, это ошибка –

+0

@KavyaShree 'var photo = upload_photo1.split ('\\'). Pop(). Split ('/'). pop(); 'Его из вашего собственного кода. Код неполный. Вы должны написать полный код самостоятельно – khandelwaldeval

0

Проблема в том, что вы не являетесь p опрашивая данные файла - просто имя. В примере из вашей ссылки есть форма, которая отправляется (с enctype = "multipart/form-data", что означает, что вы передаете двоичные данные).

Код php осуществляет доступ к данным файла через переменную $ _FILES ["Filename"] ["tmp_name"]; потому что при загрузке файла он сохраняется во временной папке с временным внутренним именем (это элемент tmp_name). Простое изменение имени файла в «fileName» в индексе не дает вам фактических данных файла.

Таким образом, быстрое решение состоит в том, чтобы обернуть поле ввода в виде acutal (с enctype = "multipart/form-data"), поймать событие отправки и передать все данные формы в вызове ajax - поэтому вместо

data:datas 

вы передаете

data: new FormData(this) 

чек на примере здесь: http://www.formget.com/ajax-image-upload-php/

EDIT: @khandelwaldeval бить меня ап swer ;-)

0

Ваш код выглядит сложным, попробуйте использовать этот

  <form id="picupload"> 
      <input type="file" accept="image/png, image/jpeg, image/gif" id="upload_photo" name="upload_photo" Required/> 
      <button type="submit" name="save" class="btn btn-theme step6"></button> 
      </form> 

JavaScript для представления

 <script> 
     $("#picupload").submit(function(e) { 

       $.ajax({ 
        url: "php/upload_files.php", 
         type: "POST",    
         data: new FormData(this), 
         contentType: false,  
         cache: false,    
         processData:false,  
           success: function(data) 
           { 
           alert(data); 
           } 

           }); 
     e.preventDefault(); 
     }); 

     </script> 

использовать код PHP для обработки файла

 <?php 
     $fileExistsFlag = 0; 
     $fileDescription ='No idea where this came from'; 
     $fileName = $_POST['upload_photo']; 
     $link = mysqli_connect("localhost","root","","spark") or die("Error ".mysqli_error($link)); 

     $query = "SELECT filename FROM filedetails WHERE filename='$fileName'"; 
     $result = $link->query($query) or die("Error : ".mysqli_error($link)); 
     while($row = mysqli_fetch_array($result)) { 
      if($row['filename'] == $fileName) { 
       $fileExistsFlag = 1; 
      }  
     } 

     if($fileExistsFlag == 0) 
     { 
      $target = "files/";  
      $fileTarget = $target.$fileName;  
      $tempFileName = $_FILES["upload_photo"]["tmp_name"]; 
      $result = move_uploaded_file($tempFileName,$fileTarget); 
      $ext = end(explode('.', $fileName)); 
      if ($_FILES["upload_photo"]["size"] > 2097152) 
       { 
       echo "Sorry, your file is too large."; 
       $uploadOk = 0; 
       } 
      else if($ext != "jpg" && $ext != "png" && $ext != "jpeg"&& $ext != "gif") 
      { 
       echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
       $uploadOk = 0; 
      } 
     else 
     { 
      if($result) { 
       echo "Your file <html><b><i>".$fileName."</i></b></html> has been successfully uploaded";  
       $query = "INSERT INTO filedetails(filepath,filename,description) VALUES ('$fileTarget','$fileName','$fileDescription')"; 
       $link->query($query) or die("Error : ".mysqli_error($link));    
      } 
      else {   
       echo "Sorry !!! There was an error in uploading your file";   
      } 
     } 
      mysqli_close($link); 
     } 

     else { 
      echo "File <html><b><i>".$fileName."</i></b></html> already exists in your folder. Please rename the file and try again."; 
      mysqli_close($link); 
     } 
     ?> 
+0

Нет im im error с этим кодом –

Смежные вопросы