PHP+HTML5+ajax 图片上传和图片预览

之前我用php来上传图片链接

,通过submit来提交图片,我一直以为图片是不能用ajax上传的,群友告诉我可以用base64来上传图片,我搞不懂,

今天碰巧找到灵位一种上传图片的方式,

下面直接show代码

html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<style>
    #result div{
        display:inline-block;
    }
</style>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title> FormData Demo </title>


</head>
<body>
<form name="form1" id="form1">//不需要写文档类型
    <p>name:<input type="text" name="name" ></p>
    <p>gender:<input type="radio" name="gender" value="1">male <input type="radio" name="gender" value="2">female</p>   <!--多张图片上传其实就是提交一个数组--->
    <p>photo:<input type="file" name="photo[]"><span></span></p>
    <p>photo:<input type="file" name="photo[]"><span></span></p>
    <p>photo:<input type="file" name="photo[]"><span></span></p>
    <p><input type="button" name="b1" value="submit"  id="submit"></p>
</form>
 <div id="result"></div>
<script>
    var assetsUrl="../assets/lib/";
</script>
<script src="../assets/lib/requirejs/require.js" ></script>
<script src="../assets/lib/require-config.js"></script>
<!--这里放js代码-->
</body>
</html>

javascript:

<script type="text/javascript">
    require(["jquery"],function($){
        //上传前预览
        $("input[type=file]").change(function(){
            var objUrl = getObjectURL(this.files[0]) ;
            console.log("objUrl = "+objUrl) ;
            if (objUrl) {
                var img="<img src="+objUrl+" width='40px' height='40px' style='border:1px solid #ccc;'/>";
                $(this).next("span").empty().html(img);
            }
        });

    //建立一個可存取到該file的url,做兼容
        function getObjectURL(file) {
            var url = null ;
            if (window.createObjectURL!=undefined) { // basic
                url = window.createObjectURL(file) ;
            } else if (window.URL!=undefined) { // mozilla(firefox)
                url = window.URL.createObjectURL(file) ;
            } else if (window.webkitURL!=undefined) { // webkit or chrome
                url = window.webkitURL.createObjectURL(file) ;
            }
            return url ;
        }
        //上传按钮
        $("#submit").click(function(){
            fsubmit();
        });

        function fsubmit(){
            var data = new FormData($('#form1')[0]);
            $.ajax({
                url: 'php/upload.php',
                type: 'POST',
                data: data,
                dataType: 'JSON',
                cache: false,
                processData: false,
                contentType: false
            }).done(function(ret){
                for(var i=0;i<ret.length;i++ ){
                    if (ret[i]['isSuccess']) {
                        var result = '';
                        result += '<div><p> name=' + ret[i]['name'] + '</p>';
                        result += '<p>gender=' + ret[i]['gender'] + '</p>';
                        result += '<img src="' + ret[i]['photo'] + '" width="100"></div>';
                        $('#result').append(result);

                    }
                }
            });
            return false;
        }
    });

</script>

PHP:

<?php
$name = isset($_POST['name'])? $_POST['name'] : '';
$gender = isset($_POST['gender'])? $_POST['gender'] : '';
//echo json_encode(array("长度",count($_FILES['photo']['name'])));
//$filename = time().substr($_FILES['photo']['name'], strrpos($_FILES['photo']['name'],'.'));
$uploads_dir = '../uploads/img/';
$dir_retrun='uploads/img/';
$tmp = array();

for($i=0;$i<count($_FILES['photo']['name']);$i++) { //foreach 循环处理多个文件上传
    $filename = time().substr($_FILES['photo']['name'][$i], strrpos($_FILES['photo']['name'][$i],'.'));
    if(move_uploaded_file($_FILES['photo']['tmp_name'][$i], "$uploads_dir$filename")){
        $response = array();
        $response['isSuccess'] = true;
        $response['name'] = $name;
        $response['gender'] = $gender;
        $response['photo'] = "$dir_retrun$filename";
        array_push($tmp,$response);
    }else{
        $response['isSuccess'] = false;
    }
}
//for($i=0;$i<$tmp.length;$i++){
//    if($tmp[$i]['isSuccess']==false){
//        $tmp['isSuccess']=false;
//        break;
//    }
//}
echo json_encode($tmp);
?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆康永

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值