繁体   English   中英

我如何在PHP中获取由jQuery上传的图像

[英]How I can get in PHP to image uploaded by jQuery

我正在使用带有图像上传选项的简单表格。 我在通过PHP代码中的jQuery访问上传的文件时遇到问题。

如何检查PHP中上传的文件名,大小?

HTML:

    <form id="conversion_form" method="post" action="#" enctype="multipart/form-data">
            <input type="text" id="prize_name" size="25" value="">
<textarea rows="8" cols="75" name="lista_losowanie" id="lista_losowanie">
            <input id="file_img" type="file" name="image">
            <div id="uploadPreview"></div>
            </div>
            <p><input id="button_draw" class="btn btn-lg btn-success" type="submit" value="Losowanie" /></p>
            </form>

这是我的Ajax,发送priest_name效果很好,但是上传的图像有问题。 如何在Ajax中发送和在PHP中接收?

AJAX:

$('#button_draw').click(function(e) {
e.preventDefault();

    var formData = new FormData();
    // let's just take the first image
    var file = $('#file_img')[0].files[0];


    // but you also need to add the other fields to formData
    var lista = $(this).closest('form').find('#lista_losowanie').val();
    var prize_name = $(this).closest('form').find('#prizename').val();

    formData.append('prize_img', file);
    formData.append('lista', lista);
    formData.append('prize_name', prize_name);

    console.log(formData);
    alert (formData);


            $.ajax({
            context: this,
            url: './inc/new_draw.php',
            data: formData,
            type: 'POST',
            success: function(response){
            //odpowiedź serwera

            //Trzeba sparsować zwrot
            var json = JSON.parse(response);

            if(json.odp == 1){

            }

            if(response == 2){

            }

            },
            error: function(x,n,o){
            }
           });



  });

PHP:

<?php

include ("config.php");

$prize_name = mysqli_real_escape_string($con, $prize_name);
$prize_img = mysqli_real_escape_string($con, $prize_img);

//HOW I CAN GET ACCESS TO UPLOADED IMAGE? HOW I CAN CHECK FILE SIZE ETC. THIS BELOW DOESNT WORK.

        $file_size = $prize_img['size'];
        $file_name = $prize_img['name'];
        $file_type = $prize_img['type'];

        echo $file_size;

        if ($prize_name == NULL) {
            $problem = TRUE;
            $problem_code = 1;
            echo json_encode($dodano);
        }
?>

Ajax方法确实支持文件上传,但仅在较新的浏览器中。 对于您可以使用XmlHttpRequest2的对象,并在你的情况最好是使用FormData对象将包含所有要提交,看到这个数据(+图像)

如果要这样做,可以通过HTML5 File API来获取文件,该示例很简单:

var formData = new FormData();
// let's just take the first image
var file = $('#fileinput').files[0];

// but you also need to add the other fields to formData
var lista = $(this).closest('form').find('#lista_losowanie').val();
var prize_name = $(this).closest('form').find('#prizename').val();

formData.append('prize_img', file);
formData.append('lista', lista);
formData.append('prize_name', prize_name);

// now you pass the formData object as data
$.ajax({
    context: this,
    url: './inc/new_draw.php',
    data: formData,
    // ....
});

如您所见,文件是一个数组 -因此,如果您在file input field上使用multiple select ,则可以简单地遍历该数组以获取所有选定的图像。

在PHP方面,如果使用FormData ,则需要使用$_FILES数组。 参见此处: PHP $ _FILES数组

从上面的示例中,您将像这样访问数组(也添加了扩展名):

$size = $_FILES['prize_img']['size']
$name = $_FILES['prize_img']['name']
$type = $_FILES['prize_img']['type']
$extension = pathinfo($name, PATHINFO_EXTENSION);

使用XHR2您还可以做一些很棒的事情,例如跟踪上载文件的进度(进度条)。 如果您需要与旧版浏览器兼容,则可以使用iframes方法: example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM