无法通过jquery,ajax和PHP上传图像

时间:2014-08-24 19:38:29

标签: php jquery ajax image upload

我对JS,PHP和Ajax有相当的了解,但这个简单的问题让我疯狂。

我正在尝试以静默方式上传图片,而不使用表单。我没有使用表单,因为这会导致我的HTML中的嵌套表单(我读过)会导致其他问题。

我已经能够使用oFReader来预览图像 要上传图像,我正在尝试如下所示的AJAX调用:

HTML

<div id="loginButton2">
  <div id="personalimg"  >
    <img src="photos/seller_photos/<?php echo $profile_pic; ?>" width="70" hight="70" />
  </div>
</div>
<div id="loginBox2" style="display:none">
  <div id="loginForm2" class="floatLeft" >
    <fieldset>
      <input id="file" type="file" name="profile_img" value="photos/seller_photos/<?php echo $profile_pic;?>"/>
      <input id="file_submit" type="hidden" name="submit4" value="1" >
    </fieldset>
  </div>
</div>

JS

$('#file').change(function(){
  var oFReader = new FileReader();
  oFReader.readAsDataURL(this.files[0]);
  var fd = new FormData();
  var file = $("#file").prop("files")[0];
  fd.append('profile_img', file);
  fd.append('submit4', 1);
  fd.append('filename', 1);
  oFReader.onload = function (oFREvent) {
    $.ajax({
      url: "upload.php",
      dataType: 'image',
      cache: false,
      contentType: false,
      processData: false,
      type: "POST",
      data:  fd,
      success: function(data){
        console.log(data);
      },
      error: function(){
       console.log("image upload failed");
      }
    });
    $('#loginForm2').toggle();
    $('#personalimg').html('<img src="'+oFREvent.target.result+'" width="70" height="70">');
  };
});

PHP

if(isset($_POST['submit4'])) {
  $check_sql =  "select profile_pic from profile where user_id=$user_id";
  $check_rs  =  mysql_query($check_sql);
  $check_num = mysql_num_rows($check_rs);
  if($check_num==0) {
    $sql =  "insert into profile(user_id) values($user_id)";
    $rs  =  mysql_query($sql); 
  }    
  $fName = $_FILES["profile_img"]["name"] ;
  $data  = explode(".", $fName);
  $fileName = $user_id.'.'.$data[1];
  if($fName!='')$user->update('profile_pic',$fileName);
  $fileTmpLoc= $_FILES["profile_img"]["tmp_name"];
  //image store path
  $pathAndName = "photos/seller_photos/".$fileName; 
  $moveResult = move_uploaded_file($fileTmpLoc, $pathAndName);
  if(move_uploaded_file) {
    $response['status'] = '1';
    header('Location: edit_profile_new.php');
  } else {
    $response['status'] = '0';
  }
  return $response;

}

但不知何故,我无法让它发挥作用。我正在使用铬。我得到302 Found状态代码&#34;图片上传失败&#34;在控制台中。

有人可以帮帮我吗?

ps:我知道,mysql已被弃用并将迁移到pdo。此代码是继承的,因此具有旧标准。<​​/ p>

0 个答案:

没有答案