php - AJAX POST文件上传控件到PHP文件

标签 php jquery ajax image form-data

我使用 AJAX 将文件上传控制值发布到 PHP 文件。

下面的文件上传控件:

<input class="form-control" type="file" id="policy_image" name="policy_image" accept="image/*">

下面的 AJAX 调用:

var file_data = $('#policy_image').prop('files')[0];   
var policy_image = new FormData();                  
policy_image.append('file', file_data);

$.ajax({
    type: 'post',
    url: 'addpolicy.php', 
    data: {
        'policy': $('#policy').val(),
        'policy_image': policy_image
    },                
    enctype: 'multipart/form-data',
    processData: false,
    contentType: false,             
    success: function(data) {
        alert('Success');
    }
});

在我的 PHP 文件中,我得到如下所示的发布值

PHP 文件:

$name = $_POST['policy'];

$imgFile = $_FILES['file']['name'];
$tmp_dir = $_FILES['file']['tmp_name'];
$imgSize = $_FILES['file']['size'];


  $upload_dir = 'assets/img/policy/'; // upload directory

  $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension

  // valid image extensions
  $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions

  // rename uploading image
  $userpic = rand(1000,1000000).".".$imgExt;

  // allow valid image file formats
  if(in_array($imgExt, $valid_extensions)){     
    // Check file size '5MB'
    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 no error occured, continue ....
if(!isset($errMSG))
{
  $stmt = $DB_con->prepare('INSERT INTO policy(name,image) VALUES(:name, :image)');
  $stmt->bindParam(':name',$name);
  $stmt->bindParam(':image',$userpic);

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

现在我收到类似 Undefined index: policyUndefined index: policy_image

的错误

最佳答案

试试这个:

var file_data = $('#policy_image').prop('files')[0];
var form_data = new FormData();
form_data.append('policy_image', file_data);

$.ajax({
    url         : 'addpolicy.php',
    cache       : false,
    contentType : false,
    processData : false,
    data        : form_data,                         
    type        : 'post',
    success     : function(output){
        alert(output);
    }
});

PHP:

if ( $_FILES['policy_image']['error'] > 0 ){
        echo 'Error: ' . $_FILES['policy_image']['error'] . '<br>';
}
else {
    if(move_uploaded_file($_FILES['policy_image']['tmp_name'], 'uploads/' . $_FILES['policy_image']['name']))
    {
        echo "File Uploaded Successfully";
    }
}

关于php - AJAX POST文件上传控件到PHP文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829937/

相关文章:

javascript - 计算 JavaScript 花费的时间

javascript - 单击单元格上的事件而不是整行 - 使用 FIDDLE

asp.net - IE 7 停止响应

javascript - 为什么我的 js 不将 php 输出读取为 json

php - Symfony 2 Entity Repository find()返回空数组

c# - 如何从 asp :TextBox when using MaxLength property? 中删除空格

php - 检测同时上传进程

php - 根据产品属性条款有条件地应用 WooCommerce 优惠券

php - 上传数据后Mysql出现空白字段

ajax - Django Ajax-Jquery 不获取数据