在Fastadmin里面做一个模仿朋友圈上传图片的效果(pc测试通过)

JS代码
/*
又拍云插件--Power by Andiff  weixin:17191079694 QQ:165607361
 */
(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as anonymous module.
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        // Node / CommonJS
        factory(require('jquery'));
    } else {
        // Browser globals.
        factory(jQuery);
    }
})(function ($) {
	'use strict';
	//常量
    var UPYUNURL = 'http://v0.api.upyun.com/andiffnet1';
    //上传接口地址
    var BUCKET = 'andiffnet1';
    //Bucket
    var FORMAPI = 'R1PnbtDDGDw+3xp+RGnsbFVq1RQ=';
    //formapi
    var SAVEPATH = 'ren';
    //保存文件的文件夹
    var URL = '/addons/upyun/index/rentoupyun.html?savepath=';

    var upyun = {
        //类似朋友圈上传多张图片
        uploadPicsByAjax:function(index,ul,dir){
            var filename = '';var fileextname = '';
            if(typeof($('#files'+index)[0].files[0].name)!='undefined'){
                filename = $('#files'+index)[0].files[0].name;
                fileextname = filename.split('.')[1];
            }
            $.getJSON(URL+dir+'&ext='+fileextname, function (data) {
                var uploadData = new FormData();
                uploadData.append('file', $('#files'+index)[0].files[0]);
                uploadData.append('policy', data.policy);
                uploadData.append('authorization', data.authorization);
                $.ajax({
                    url: UPYUNURL,
                    type: 'POST',
                    data: uploadData,
                    cache: false,
                    processData: false,
                    contentType: false,
                }).done(function(data, textStatus) {
                    //alert(JSON.stringify(data));
                    var body = jQuery.parseJSON(data);
                    var img = '<img width="100%" src="https://qd.andiff.net/'+body.url+'" />';
                    img = img + '<img class="imgcommon" src="/images/cha.png" />';
                    img = img + '<input type="hidden" name="row[picurl][]" value="'+body.url+'" />';
                    //img = img + '<span><input class="form-control" name="row[listorder][]" type="text" value="1" placeholder="顺序" /></span>';
                    $("#"+ul+" li").eq(index).html(img);
                }).fail(function(res, textStatus, error) {
                    try {
                        var body = JSON.parse(res.responseText);
                        alert('error: ' + body.message);
                    } catch(e) {
                        console.error(e);
                    }
                });
            });
        },
        //普通的上传文件
        uploadByAjax: function (file1,show1,dir) {
            var filename = '';var fileextname = '';
            if(typeof($('#'+file1)[0].files[0].name)!='undefined'){
                filename = $('#'+file1)[0].files[0].name;
                fileextname = filename.split('.')[1];
            }
            var arry = $('#'+file1).attr("accept").split(',');
            var inarray = $.inArray('.'+fileextname, arry);
            if(inarray==-1){
                alert('请上传'+arry.join()+'文件');
                return;
            }
            $.getJSON(URL+dir+'&ext='+fileextname, function (data) {
                var uploadData = new FormData();
                uploadData.append('file', $('#'+file1)[0].files[0]);
                uploadData.append('policy', data.policy);
                uploadData.append('authorization', data.authorization);
                $.ajax({
                    url: UPYUNURL,
                    type: 'POST',
                    data: uploadData,
                    cache: false,
                    processData: false,
                    contentType: false,
                }).done(function(data, textStatus) {
                    //alert(JSON.stringify(data));
                    var body = jQuery.parseJSON(data);
                    $("#"+show1).val(body.url);
                    if(typeof($('#'+file1).attr("previewid"))!='undefined'){
                        var preid = $('#'+file1).attr("previewid");
                        var str = '<li class="col-xs-3">';
                        str = str + '<a href="http://qd.andiff.net/'+body.url+'" data-url="http://qd.andiff.net/'+body.url+'" target="_blank" class="thumbnail">';
                        str = str + '<img src="http://qd.andiff.net/'+body.url+'" class="img-responsive" /></a>';
                        str = str + '<a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>';
                        str = str + '</li>';
                        $("#"+preid).html(str);
                    }
                }).fail(function(res, textStatus, error) {
                    try {
                        var body = JSON.parse(res.responseText);
                        alert('error: ' + body.message);
                    } catch(e) {
                        console.error(e);
                    }
                });
            });
        },
        //summernote文字编辑器里面上传图片
        uploadForSummerNote: function (file1,show1) {
            $.getJSON(URL+'summernote', function (data) {
                var uploadData = new FormData();
                uploadData.append("file", file1);
                uploadData.append('policy', data.policy);
                uploadData.append('authorization', data.authorization);
                $.ajax({
                    url: UPYUNURL,
                    //url: '/index/rentoupyun',
                    type: 'POST',
                    data: uploadData,
                    cache: false,
                    processData: false,
                    contentType: false,
                }).done(function(data, textStatus) {
                    var body = jQuery.parseJSON(data);
                    $("#"+show1).summernote('insertImage', 'https://qd.andiff.net/'+body.url, 'image name');
                }).fail(function(res, textStatus, error) {
                    try {
                        var body = JSON.parse(res.responseText);
                        alert('error: ' + body.message);
                    } catch(e) {
                        console.error(e);
                    }
                });
            });
            //return $.inArray(type, this.dems) !== -1;
        },
    };
    return upyun;
});

css代码:

.input-group-addon span{ position:relative; }
.cheng_ul_pics{width:100%;}
.cheng_ul_pics li{
	width:27%;border:1px solid #ddd;margin:0 5px 10px; position:relative;
    background-image: url(http://qd.andiff.net/script/plupload/logo.png); background-size:100%;
}

.cheng_ul_pics li{width:30%;float: left;}
.cheng_ul_pics li input[type=file]{
	font-size: 999px;top: 0px;left: 0px;
    opacity: 0;position: absolute;
    width: 80%;height: 80%;
}
.cheng_ul_pics li img{width:100%;height:100%;}
.cheng_ul_pics li img.imgcommon{position:absolute;right: 0;top:0;width:10%; height: 10%;cursor: pointer;}
 .cheng_ul_pics li span{width:50%;position: absolute;bottom:-25%;left: 25%;/**/display:block;}
.cheng_ul_pics li span input{/*width:90%; margin:0 auto;float: left;z-index: 9999;*/}
.moxie-shim-html5{position: absolute; top: 0px; left: 0px; width: 65px; height: 31px; overflow: hidden; z-index: 0;}
.upyun_upload{font-size: 999px; opacity: 0; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;}
.clearfix{clear: both;}

HTML代码:

<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
    <input type="hidden" id="c-productid" name="row[productid]" value="{$productid}" />
    <div class="form-group">
        <label for="c-picurl" class="control-label col-xs-12 col-sm-2">图片上传:</label>
        <div class="col-xs-12 col-sm-8">
            <ul id="cheng_ul_pics" class="cheng_ul_pics clearfix">
                <li>
                    <input type="file" name="files0" id="files0" />
                </li>
								<li>
                    <input type="file" name="files1" id="files1">
                </li>
								<li>
                    <input type="file" name="files2" id="files2" />
                </li>
								<li>
                    <input type="file" name="files3" id="files3">
                </li>
            </ul>
            <ul id="cheng_ul_pics" class="cheng_ul_pics clearfix">
            </ul>
        </div>
    </div>
		<div class="form-group">
				<p> </p>
		</div>
		<div class="form-group">
				<label class="control-label col-xs-12 col-sm-2"></label>
				<div class="col-xs-12 col-sm-8">
						<button type="submit" class="btn btn-success btn-embossed">确定</button>
						<button type="reset" class="btn btn-default btn-embossed">重置</button>
				</div>
		</div>
</form>




FastAdmin默认使用WebUploader进行多图上传,可以通过修改上传控件的配置,实现每个图片要添加一个描述的需求。以下是具体步骤: 1. 在需要添加多图上传的表单页面中,添加一个文本框用于输入每个图片的描述信息。 2. 在控制器中,将文本框的name属性值作为webuploader的描述字段传递给视图页面。 例如,在编辑页面中添加一个文本框: ```html <div class="form-group"> <label class="col-sm-2 control-label">图片描述</label> <div class="col-sm-8"> <input type="text" class="form-control" name="desc[]" placeholder="请输入图片描述" value="<?php echo htmlentities($vo['desc']); ?>"> </div> </div> ``` 在控制器中,将文本框的name属性值作为webuploader的描述字段传递给视图页面: ```php // 图片上传 $this->assign('upload', [ 'url' => url('upload/image'), 'name' => 'file', 'data' => [ 'thumb' => 1, 'water' => 1, 'desc' => 'desc[]' // 添加图片描述 ] ]); ``` 3. 在webuploader的上传控件中,添加描述字段,并将描述字段作为参数传递给后台。 例如,在webuploader的上传控件中,添加描述字段: ```javascript uploader = WebUploader.create({ ... formData: { ... desc: desc // 描述字段 } }); ``` 在后台处理上传的图片时,可以通过获取上传控件传递的描述字段,将描述信息存储到数据库中。 例如,在处理上传图片的控制器方法中,获取描述字段: ```php $desc = $this->request->post('desc/a', []); ``` 然后,将描述信息与上传的图片一起存储到数据库中。 这样,就实现了每个上传的图片要添加一个描述的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值