Thinkphp3.2.3 单图上传及生产缩略图

本文详细介绍了使用前端技术实现图片上传的功能,包括HTML文件输入、jQuery事件监听、FormData对象构造及Ajax异步请求。后端采用TP框架处理上传,生成不同尺寸的图片,并返回结果供前端展示。

前端

<div class="layui-form-item">
    <label class="layui-form-label">您的照片</label>
    <div class="layui-input-inline">
        <label for="upload" class="layui-btn" id="zq-upload">上传照片</label>
        <input type="file" id="upload" style="display: none;" />
        <input type="hidden" id="image" name="hd_img" />
        <input type="hidden" id="image_sm" name="hd_img_sm" />
        <input type="hidden" id="image_md" name="hd_img_md" />
        <div class="show-image" style="display: none;">
            <img class="responsive" src="" />
        </div>
    </div>
</div>

JS

//上传图片
$("#upload").change(function() {
    var image = $(this).get(0).files[0];
    if (image.type.indexOf("image") >= 0) {
        var formdata = new FormData();
        formdata.append('file', image);
        $.ajax({
            url: "__CONTROLLER__/upload",
            type: "post",
            data: formdata,
            cache: false,
            contentType: false,
            processData: false,
            dataType: "json",
            success: function(res) {
                if (res["status"] == "0") {
                    $("#image").val(res["image"]["savepath"] + res["image"]["savename"]);
                    $("#image_sm").val(res["image"]["savepath"] + 'sm_' + res["image"]["savename"]);
                    $("#image_md").val(res["image"]["savepath"] + 'md_' + res["image"]["savename"]);
                    //sm小图全地址
                    $('input[name="hd_img_sm_all"]').attr('value', "__UPLOAD__/" + res["image"]["savepath"] + 'sm_' + res["image"]["savename"]);
                    //md中图全地址
                    $('input[name="hd_img_md_all"]').attr('value', "__UPLOAD__/" + res["image"]["savepath"] + 'md_' + res["image"]["savename"]);

                    //下面本来是显示原图,但是为了大小,这里显示中图即可。
                    $("#image").siblings(".show-image").show();
                    $("#image").siblings(".show-image").find("img").attr("src", "__UPLOAD__/" + res["image"]["savepath"] + 'md_' + res["image"]["savename"]);
                } else {
                    layer.msg(res["message"]);
                }
            }
        })
    } else {
        layer.msg('图片上传失败');
    }
})

tp后端处理

//活动图片上传
public function upload()
{
    $conf = array(
        'maxSize' => 0,
        'rootPath' => './Public/Upload/',
        'savePath' => 'hd/',
        'exts' => array('jpg', 'gif', 'png', 'jpeg', 'bmp'),
        'subName' => array('date', 'Ym')
    );
    $upload = new Upload($conf);

    $info = $upload->upload();
    //原图
    $bigname = $conf['rootPath'].$info['file']['savepath'].$info['file']['savename'];

    //小图-首页显示
    $im = new \Think\Image();
    //打开原图
    $im->open($bigname);
    //为原图制作 小图
    $im->thumb(328, 600);
    //保存
    $smallpic = $conf['rootPath'].$info['file']['savepath'].'sm_'.$info['file']['savename'];
    $sm = $im->save($smallpic);


    //中图-内容页显示
    $im->open($bigname);
    $im->thumb(600, 600);
    //保存
    $midpic = $conf['rootPath'].$info['file']['savepath'].'md_'.$info['file']['savename'];
    $md = $im->save($midpic);

    if ($info) {
        $ajax = array(
            'status' => '0',
            'message' => '上传成功',
            'image' => $info['file']
        );
    } else {
        $ajax = array(
            'status' => '1',
            'message' => $upload->getError()
        );
    }
    $this->ajaxReturn($ajax);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值