分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
         
           
bootstrap+fileinput插件实现可预览上传照片功能-LMLPHP
图片.png

实际项目中运用:


bootstrap+fileinput插件实现可预览上传照片功能-LMLPHP
图片.png

功能:实现上传图片,更改上传图片,移除图片的功能

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">        <link rel="stylesheet" href="bootstrap-fileinput.css">        <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>        <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>        <script src="bootstrap-fileinput.js"></script>    </head>    <body>        <div class="form-group">            <div class="col-md-8">                <div class="fileinput fileinput-new" data-provides="fileinput" id="uploadImageDiv">                    <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">                        <img src="${companyInfo.image}" alt="" />                    </div>                    <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>                    <div>                        <span class="btn default btn-file"> <span                                            class="fileinput-new">选择图片</span> <span class="fileinput-exists">更改</span> <input type="file" name="uploadImage" id="uploadImage" /></span>                        <a href="#" class="btn default fileinput-exists" data-dismiss="fileinput">移除</a>                        <span>请选择1M以内图片</span>                    </div>                </div>                <div id="titleImageError" style="color: #a94442"></div>            </div>        </div>    </body>     <script>       var url = '';$("#uploadImage").fileupload({    url : ROOT + "/security/company/uploadFile",    dataType : 'json',    autoUpload : false,    acceptFileTypes : /(gif|jpe?g|png)$/i,    maxFileSize : 1000000, // 1 MB    imageMaxWidth : 100,    imageMaxHeight : 100,    messages : {        acceptFileTypes : '文件类型不匹配',        maxFileSize : '文件过大',        minFileSize : '文件过小'    }}).on("fileuploadadd", function(e, data) {    // 当文件添加上去时候调用    $("#titleImageError").html("");    data.submit()}).on("fileuploaddone", function(e, data) {    // 上传完成时调用    if (data.result.returnState == "ERROR") {        alert("上传失败")        return;    }    url = data.result.returnData.url;});function updateMsg() {    $.ajax({        url : ROOT + "/security/company/updateInfo",        data : {            id : $("#companyId").val(),            image : url,            companyName : $("#companyName").val(),            companySite : $("#companySite").val(),            companyLinker : $("#companyLinker").val(),            companyTel : $("#companyTel").val()        },        type : "post",        success : function(data) {            if (data.returnState == "OK") {                layer.msg('操作成功', {                    icon : 6,                    shade : 0.01,                    offset : [ '57px', '1100px' ]                });                $table.bootstrapTable('refresh');            } else {                layer.msg('操作失败', {                    icon : 5,                    shade : 0.01,                    offset : [ '90px', '900px' ]                });            }        }    });}    </script></html>

bootstrap-fileinput.css文件:(github目前正在维护中,之后所有代码上传至我的github)

/*! * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap) * Copyright 2012-2014 Arnold Daniels * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE) */ .btn-fileposition: relative;  overflow: hidden;  vertical-align: middle;}.btn-file > inputposition: absolute;  top: 0right: 0width: 100%height: 100%margin: 0font-size: 23pxcursor: pointer;  filter: alpha(opacity=0);  opacity: 0direction: ltr;}.fileinputdisplay: inline-block;  margin-bottom: 9px;}.fileinput .form-controldisplay: inline-block;  padding-top: 7pxpadding-bottom: 5pxmargin-bottom: 0vertical-align: middle;  cursor: text;}.fileinput .thumbnaildisplay: inline-block;  margin-bottom: 5pxoverflow: hidden;  text-align: center;  vertical-align: middle;}.fileinput .thumbnail > imgmax-height: 100%;}.fileinput .btnvertical-align: middle;}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-existsdisplay: none;}.fileinput-inline .fileinput-controlsdisplay: inline;}.fileinput-filenamedisplay: inline-block;  overflow: hidden;  vertical-align: middle;}.form-control .fileinput-filenamevertical-align: bottom;}.fileinput.input-groupdisplay: table;}.fileinput.input-group > * {  position: relative;  z-index: 2;}.fileinput.input-group > .btn-filez-index: 1;}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-fileborder-radius: 0 4px 4px 0;}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-smborder-radius: 0 3px 3px 0;}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lgborder-radius: 0 6px 6px 0;}.form-group.has-warning .fileinput .fileinput-previewcolor: #8a6d3b;}.form-group.has-warning .fileinput .thumbnailborder-color: #faebcc;}.form-group.has-error .fileinput .fileinput-previewcolor: #a94442;}.form-group.has-error .fileinput .thumbnailborder-color: #ebccd1;}.form-group.has-success .fileinput .fileinput-previewcolor: #3c763d;}.form-group.has-success .fileinput .thumbnailborder-color: #d6e9c6;}.input-group-addon:not(:first-child)border-left: 0;}

bootstrap-fileinput.js:

/* =========================================================== * Bootstrap: fileinput.js v3.1.3 * http://jasny.github.com/bootstrap/javascript/#fileinput * =========================================================== * Copyright 2012-2014 Arnold Daniels * * Licensed under the Apache License, Version 2.0 (the "License") * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ========================================================== */+function ($) { "use strict"var isIE = window.navigator.appName == 'Microsoft Internet Explorer'  // FILEUPLOAD PUBLIC CLASS DEFINITION  // =================================  var Fileinput = function (element, options) {    this.$element = $(element)        this.$input = this.$element.find(':file')    if (this.$input.length === 0) return    this.name = this.$input.attr('name') || options.name    this.$hidden = this.$element.find('input[type=hidden][name="' + this.name + '"]')    if (this.$hidden.length === 0) {      this.$hidden = $('<input type="hidden">').insertBefore(this.$input)    }    this.$preview = this.$element.find('.fileinput-preview')    var height = this.$preview.css('height')    if (this.$preview.css('display') !== 'inline' && height !== '0px' && height !== 'none') {      this.$preview.css('line-height', height)    }            this.original = {      exists: this.$element.hasClass('fileinput-exists'),      preview: this.$preview.html(),      hiddenVal: this.$hidden.val()    }        this.listen()  }    Fileinput.prototype.listen = function() {    this.$input.on('change.bs.fileinput', $.proxy(this.change, this))    $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this))        this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this))    this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this))  },  Fileinput.prototype.change = function(e) {    var files = e.target.files === undefined ? (e.target && e.target.value ? [{ name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files        e.stopPropagation()    if (files.length === 0) {      this.clear()      return    }    this.$hidden.val('')    this.$hidden.attr('name', '')    this.$input.attr('name', this.name)    var file = files[0]    if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg)$/) : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {      var reader = new FileReader()      var preview = this.$preview      var element = this.$element      reader.onload = function(re) {        var $img = $('<img>')        $img[0].src = re.target.result        files[0].result = re.target.result                element.find('.fileinput-filename').text(file.name)                // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account        if (preview.css('max-height') != 'none') $img.css('max-height', parseInt(preview.css('max-height'), 10) - parseInt(preview.css('padding-top'), 10) - parseInt(preview.css('padding-bottom'), 10)  - parseInt(preview.css('border-top'), 10) - parseInt(preview.css('border-bottom'), 10))                preview.html($img)        element.addClass('fileinput-exists').removeClass('fileinput-new')        element.trigger('change.bs.fileinput', files)      }      reader.readAsDataURL(file)    } else {      this.$element.find('.fileinput-filename').text(file.name)      this.$preview.text(file.name)            this.$element.addClass('fileinput-exists').removeClass('fileinput-new')            this.$element.trigger('change.bs.fileinput')    }  },  Fileinput.prototype.clear = function(e) {    if (e) e.preventDefault()        this.$hidden.val('')    this.$hidden.attr('name', this.name)    this.$input.attr('name', '')    //ie8+ doesn't support changing the value of input with type=file so clone instead    if (isIE) {       var inputClone = this.$input.clone(true);      this.$input.after(inputClone);      this.$input.remove();      this.$input = inputClone;    } else {      this.$input.val('')    }    this.$preview.html('')    this.$element.find('.fileinput-filename').text('')    this.$element.addClass('fileinput-new').removeClass('fileinput-exists')        if (e !== undefined) {      this.$input.trigger('change')      this.$element.trigger('clear.bs.fileinput')    }  },  Fileinput.prototype.reset = function() {    this.clear()    this.$hidden.val(this.original.hiddenVal)    this.$preview.html(this.original.preview)    this.$element.find('.fileinput-filename').text('')    if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new')     else this.$element.addClass('fileinput-new').removeClass('fileinput-exists')        this.$element.trigger('reset.bs.fileinput')  },  Fileinput.prototype.trigger = function(e) {    this.$input.trigger('click')    e.preventDefault()  }    // FILEUPLOAD PLUGIN DEFINITION  // ===========================  var old = $.fn.fileinput    $.fn.fileinput = function (options) {    return this.each(function () {      var $this = $(this),          data = $this.data('bs.fileinput')      if (!data) $this.data('bs.fileinput', (data = new Fileinput(this, options)))      if (typeof options == 'string') data[options]()    })  }  $.fn.fileinput.Constructor = Fileinput  // FILEINPUT NO CONFLICT  // ====================  $.fn.fileinput.noConflict = function () {    $.fn.fileinput = old    return this  }  // FILEUPLOAD DATA-API  // ==================  $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) {    var $this = $(this)    if ($this.data('bs.fileinput')) return    $this.fileinput($this.data())          var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');    if ($target.length > 0) {      e.preventDefault()      $target.trigger('click.bs.fileinput')    }  })}(window.jQuery);

文末福利:

福利一:前端,Java,产品经理,微信小程序,Python等资源合集大放送:https://www.jianshu.com/p/e8197d4d9880
福利二:微信小程序入门与实战全套详细视频教程

bootstrap+fileinput插件实现可预览上传照片功能-LMLPHP
image

领取方式:
如果需要学习视频,欢迎关注 【编程微刊】微信公众号,回复【领取资源】一键领取以下所有干货资源,获取更多有用技术干货、文档资料。所有文档会持续更新,欢迎关注一起成长!

原文作者:祈澈姑娘
原文链接:https://www.jianshu.com/u/05f416aefbe1
创作不易,转载请告知

90后前端妹子,爱编程,爱运营,爱折腾。
坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。

         
       
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

bootstrap+fileinput插件实现可预览上传照片功能-LMLPHP
12-08 04:11