2016-04-18 16 views
0

これは私の問題です。画像をアップロードしようとしましたが、このURLの助けを借りて、データベース内の対応するフォルダと画像パスに画像を保存します。ajaxとPHPを使用して画像をアップロード

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

私がそのようにしたとき、私は正しい答えを得るでしょう。 AJAXで同じコードを試した後、正しく動作しません。私は何をしたのか分かりません。以下は私のコードです。 enter image description here

で取得何イム

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); 
    } 
?> 

エラー210

私の疑問にお答えください。PHPの初心者です。この問題を助けてください。

+0

の可能性の重複を処理するためにPHPコードを使用して提出

 <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> 

のために、この

 <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を使用して、複雑な試みを探しますjquery ajax File Upload php](http://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php) – Shadow

+0

ファイルの内容ではなく、ajaxリクエストでファイルの名前(ある場合)のみを送信します。ファイルアップロードのサンプルコードについてはリンク先のトピックを参照してください。 – Shadow

答えて

1

jsとphpの両方でコードに深刻な問題があります。あなたはファイルを全くアップロードしていません。ファイル名をアップロードしました。入力として説明はありませんが、あなたのPHPコードに記述されていない変数があります。間違った名前でファイルを処理しました。
FormDataでファイルをアップロードしてみてください。まず、

data: formData, 

とあなたのphpファイルで

を書き、ID

<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リクエスト内でフォームタグを使用

<?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

未知の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'を 'fileName'に変更しても、実際のファイルデータは得られません。

入力フィールドをacutal形式(enctype = "multipart/form-data")にラップし、送信イベントをキャッチして、フォームデータ全体をajax呼び出しで渡すことが簡単な解決策です。

data:datas 

あなたがここに

data: new FormData(this) 

チェックアウトの例を渡す: http://www.formget.com/ajax-image-upload-php/

EDIT:ANに私を打つ@khandelwaldevalをswer ;-)

0

あなたのコードは、[ファイル

 <?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

このコードにエラーはありません –

関連する問題