国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

H5圖片預覽及上傳(WEB前端)

2024-04-27 15:07:33
字體:
來源:轉載
供稿:網友

H5圖片預覽及上傳

web上傳圖片很簡單,網上有許多的demo和js,但是本人嫌棄用那些會引入許多js包,所以還是用原生的jquery來寫吧。

一、html布局文件

html有一個自己的上傳文件控件---input,只需要將其type屬性設置為file即可上傳文件,accept=“image/”是用來限制文件類型為image,input代碼如下:
 <input class="input-upload" type="file" accept="image/*"  name="pic" >之后,我們還需要一個image標簽來存放圖片的預覽:
<img v-bind:src="demand.image" /> //v-bind是vue.js的用法,將src的屬性綁定為demand.image,可支持動態改變src的值,減少dom操作完整的html代碼:
<div id="ImageUploader" data-vpid="<%-VPID%>" data-vpcon="`{MODURL}`.js"><div class="filearea">        <span class="btn-upload icon-enclosure">            <input class="input-upload" type="file" accept="image/*"  name="pic" >        </span>    <div class="PReview" >        <i class="hide"></i>        <img v-bind:src="demand.image" />        <div class="remove icon-delete"></div>    </div></div></div>

二、CSS樣式

對應的css樣式:
@import "src/node_modules/views/global/sass/mixin";#ImageUploader {    position: relative;    .btn-upload {        position: relative;        overflow: hidden;        width: 1.57rem;        height: 1.05rem;        border: solid 1px $blue;        display: table-cell;         vertical-align: middle;        text-align: center;        color: $blue;        z-index: 20;        margin-top: 10px;        margin-left: 15px;    }    .input-upload {        position: absolute;        top: 0;        right: 0;        margin: 0;        opacity: 0;        -ms-filter: 'alpha(opacity=0)';        cursor: pointer;		direction: ltr;		font-size: 200px !important;  /* 為了能點中,弄個超大字號 */    }	.preview {        position: absolute;	}    img {        max-width: 1.57rem;        max-height: 1.05rem;        }	.remove {        position: absolute;        top: -8px;        right: -8px;        z-index: 10;        width: 0.16rem;        height: 0.16rem;        border-radius: 50%;        color: white;        background: $blue;         font-size: 0.11rem;        text-align: center;        padding-top: 2px;	}}

三、TS代碼

本人的用的是TS寫的,編輯器可以自動將TS轉化為JS,圖片的預覽有兩種方法,一是根據input獲取html5 JS對象;而是根據file對象生成一個圖像URL,即下面代碼中的function1和function2
import * as tomato from "@po-to/tomato";import * as project from "views/global/common/Project";import * as funs from "views/global/common/Funs";import * as model from "views/global/common/Model";import * as Vue from "vue";import css = require("./css");    //在js中引入css樣式import * as api from "views/global/common/API";class VPresenter extends project.VPresenter {    /**模塊 */    private ImageUploader_vue: any;    /**預覽圖片 */    private img;    private preview;    /**input控件 */    private inputUpload;    private btnUpload: JQuery;    /**demand */    private demand;    // private form;    constructor(view: tomato.VPView, parent?: tomato.VPresenter, vpid?: string) {        super(view, parent, vpid);        var aaa = css;//hack        var user = model.globalData.user;        var demand = this.demand = model.globalData.demand;        var that = this;        //取到html中的元素       this.preview = this.find(".preview");        this.btnUpload = this.find(".btn-upload ");        this.inputUpload = this.find(".input-upload");        /**刪除預覽 */        this.preview.on('click', function () {            that.demand.image = '';            that.setImg();        });        /**預覽上傳圖片 */        this.inputUpload.on('change', function (event) {            // 根據這個 <input> 獲取文件的 HTML5 js 對象            var files = event.target.files, file;            if (files && files.length > 0) {                // 獲取目前上傳的文件                file = files[0];                // 來在控制臺看看到底這個對象是什么                console.log(file);                // 那么我們可以做一下諸如文件大小校驗的動作                if (file.size > 1024 * 1024 * 2) {                    alert('圖片大小不能超過 2MB!');                    return false;                }                // 圖片預覽 function 1                if (window['FileReader']) {                    var reader = new FileReader();                } else {                    alert("您的設備不支持圖片預覽功能,如需該功能請升級您的設備!");                }                var reader = new FileReader();                var imageType = /^image///;                //是否是圖片                if (!imageType.test(file.type)) {                    alert("請選擇圖片!");                    return;                }                //讀取完成                reader.onload = function (e) {                    //圖片路徑設置為讀取的圖片                    that.demand.image = this.result;                };                reader.readAsDataURL(file);                // 圖片預覽 function 2                // 下面是關鍵的關鍵,通過這個 file 對象生成一個可用的圖像 URL                // 獲取 window 的 URL 工具                // var URL = window.URL || window['webkitURL'];                // 通過 file 生成目標 url                // var imgURL = URL.createObjectURL(file);                // 用這個 URL 產生一個 <img> 將其顯示出來                // demand.image = imgURL;                // 使用下面這句可以在內存中釋放對此 url 的伺服,跑了之后那個 URL 就無效了                // URL.revokeObjectURL(imgURL);               that.fileUpload(file);//預覽出現后調用上傳方法,傳值為一個file對象,也可以傳demand.image預覽地址,看服務器那邊怎么要求的            }        });        this.setImg();        //this._watchEvent();    }    /** 初始化*/    private setImg() {        /**是否有圖片 */        if ("" == this.demand.image) {            this.preview.addClass("hide");            this.btnUpload.removeClass("hide");        } else {            this.btnUpload.addClass("hide");            this.preview.removeClass("hide");        }    }    /**上傳文件,參數:訂單id和文件對象 */    private fileUpload(file) {        var that=this;        var demand_id = this.demand.id;        var formData = new FormData();        formData.append('demand_id', demand_id);        formData.append('file', file);        $.Ajax({            xhrFields: {withCredentials: true},//ajx請求時帶上cookie            url: 'http://dev.v2.api.wanpinghui.com/Img/uploadDemandPlaceImage',            type: 'POST',            cache: false,            data: formData,            processData: false,            contentType: false        }).done(function (json) {            console.log("::"+json.image);            model.globalData.demand.image = json.image;        }).fail(function (json) { });    }}export = VPresenter;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 廉江市| 嫩江县| 和田县| 仲巴县| 紫云| 洞头县| 温宿县| 交口县| 夏津县| 凤凰县| 樟树市| 吉首市| 定西市| 花莲县| 宝山区| 曲阳县| 温宿县| 大埔县| 龙南县| 丰台区| 萨嘎县| 黑山县| 和田县| 乐清市| 兴文县| 博客| 宜兴市| 新田县| 盈江县| 临城县| 山阴县| 新建县| 瑞昌市| 仙游县| 嘉祥县| 乌拉特前旗| 丹凤县| 克东县| 邵阳县| 武乡县| 黔南|