Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX POST文件上载控件到PHP文件_Php_Jquery_Ajax_Image_Form Data - Fatal编程技术网

AJAX POST文件上载控件到PHP文件

AJAX POST文件上载控件到PHP文件,php,jquery,ajax,image,form-data,Php,Jquery,Ajax,Image,Form Data,使用AJAX,我将文件上载控制值发布到PHP文件 文件上传控制如下: <input class="form-control" type="file" id="policy_image" name="policy_image" accept="image/*"> 在我的PHP文件中,我得到如下所示的发布值 PHP文件: $name = $_POST['policy']; $imgFile = $_FILES['file']['name']; $tmp_dir = $_FILES['

使用AJAX,我将文件上载控制值发布到PHP文件

文件上传控制如下:

<input class="form-control" type="file" id="policy_image" name="policy_image" accept="image/*">
在我的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....";
  }
}
$name=$\u POST['policy'];
$imgFile=$\u文件['file']['name'];
$tmp_dir=$_FILES['file']['tmp_name'];
$imgSize=$_文件['file']['size'];
$upload_dir='assets/img/policy/';//上载目录
$imgExt=strtolower(路径信息($imgFile,路径信息_扩展));//获取图像扩展名
//有效的图像扩展
$valid_extensions=array('jpeg','jpg','png','gif');//有效扩展名
//重命名上载图像
$userpic=兰特(10000000)。“..$imgExt;
//允许使用有效的图像文件格式
if(在数组中($imgExt,$valid_扩展名)){
//检查文件大小“5MB”
如果($imgSize<5000000){
移动上传的文件($tmp\u dir,$upload\u dir.$userpic);
}
否则{
$errMSG=“对不起,您的文件太大。”;
}
}
否则{
$errMSG=“对不起,只允许使用JPG、JPEG、PNG和GIF文件。”;
}
//如果没有发生错误,请继续。。。。
如果(!isset($errMSG))
{
$stmt=$DB_con->prepare('INSERT-INTO-policy(name,image)值(:name,:image)');
$stmt->bindParam(':name',$name);
$stmt->bindParam(':image',$userpic);
如果($stmt->execute())
{
$successsg=“新记录成功插入…”;
}
其他的
{
$errMSG=“插入时出错…”;
}
}
现在我遇到了错误,比如
未定义索引:policy
未定义索引:policy\u 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($\u文件['policy\u image']['error']>0){
回显“错误:”.$\u文件['policy_image']['Error'].
; } 否则{ 如果(移动上传的文件($文件['policy\u image']['tmp\u name'],'uploads/'。$文件['policy\u image']['name'])) { echo“文件上传成功”; } }
upload.php
$('#upload')。在('单击',函数()上){
var file_data=$('#sortpicture').prop('files')[0];
var form_data=new FormData();
表单\数据。追加('文件',文件\数据);
警报(表格数据);
$.ajax({
url:'addpolicy.php',//指向服务器端php脚本
dataType:'text',//如果PHP脚本有什么需要的话,那么它将返回什么
cache:false,
contentType:false,
processData:false,
数据:表格数据,
键入:“post”,
成功:功能(响应){
警报(响应);
}
});
});
addpolicy.php

在表单数据中,您将文件命名为
file
,而不是
policy\u image
@RoryMcCrossan,因此我需要调用
$\u文件['file']['name']未定义索引:file
请查看我的编辑上方。在那之后我在做我的事情。如何与您的代码集成?我正在通过AJAX
data:{'policy':$('#policy').val(),'policy#image':policy#image},
请查看我的编辑上方。在那之后我在做我的事情。我想如何与您的代码集成?我仍然得到
未定义索引:policy
未定义索引:file
。我想我又犯了一个错误。
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);
    }
});
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";
    }
}
    upload.php
        $('#upload').on('click', function() {
            var file_data = $('#sortpicture').prop('files')[0];   
            var form_data = new FormData();                  
            form_data.append('file', file_data);
            alert(form_data);                             
            $.ajax({
                        url: 'addpolicy.php', // point to server-side PHP script 
                        dataType: 'text',  // what to expect back from the PHP script, if anything
                        cache: false,
                        contentType: false,
                        processData: false,
                        data: form_data,                         
                        type: 'post',
                        success: function(response){
                            alert(response);
                        }
             });
        });
    addpolicy.php
    <?php

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

    ?>