mui+vue实现图片上传

2020-04-06  本文已影响0人  深夜程序员_

mui+vue实现图片上传

在线工具:http://mxdqh.top/

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

<link href="../css/mui.min.css" rel="stylesheet" />

<link href="../css/common.css" rel="stylesheet" />

<link href="../css/myphone.css" rel="stylesheet" />

<style>

/* .mui-media-bodyEx {

font-size: 13px;

line-height: 15px;

display: block;

width: 100%;

height: 15px;

text-overflow: ellipsis;

color: #6C6C6C;

}

[v-cloak] {

display: none;

}

.mui-card {

font-size: 14px;

position: relative;

overflow: hidden;

margin: 0;

border-radius: 2px;

background-color: #fff;

background-clip: padding-box;

box-shadow: 0 1px 2px rgba(0, 0, 0, .3);

}

.floatLeftText {

float: left;

text-align: left;

background-color: #C8C7CC;

border-radius: 0.525rem;

padding-left: 0.625rem;

}

.rightText {

text-align: right;

}

.mui-table-view.mui-grid-view .mui-table-view-cell {

font-size: 17px;

display: inline-block;

margin-right: -4px;

text-align: left;

vertical-align: middle;

background: 0 0;

}

.headerMain {

padding: 0.625rem 0 0.625rem 0.625rem;

font-size: smaller;

} */

</style>

</head>

<body>

<div id="imageUpload">

<header class="mui-bar mui-bar-nav">

<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>

<h1 class="mui-title">图片上传 </h1>

<a class="mui-icon-right-nav mui-pull-right" v-on:click="headImage()">

<span id="headImage" class="mui-icon mui-icon-camera"></span>

</a>

</header>

<div class="mui-content" style="background-color:#fff">

<template  v-if="viewFlage==1" >

<ul id="imgs" class="mui-table-view mui-grid-view">

<li class="mui-table-view-cell mui-media mui-col-xs-6" v-for="(item, index) in filePathList">

<img class="mui-media-object" :src="item">

<span class="mui-icon mui-icon-trash deleteBtn" v-on:click="removeImage(item,index)"></span>

</li>

</ul>

<a class="mui-icon-right-nav mui-pull-right" v-on:click="uploadImage">

<span id="uploadImage" class="mui-icon mui-icon-upload mui-btn"></span>

</a>

</template >

</div>

</div>

<script src="../js/mui.min.js"></script>

<script src="../js/vue.min.js"></script>

<script src="../js/common.js"></script>

<script src="../js/jquery.min.js"></script>

<script src="../js/utils.js"></script>

<script>

var Vue = new Vue({

el: '#imageUpload',

data: {

viewFlage: 0,

fileArr: [],

filePathList: [],

},

// 初期化的时候调用后台

created: function() {},

methods: {

headImage: function() {

if (mui.os.plus) {

var buttonTit = [{

title: "拍照"

}, {

title: "从手机相册选择"

}];

plus.nativeUI.actionSheet({

title: "上传图片",

cancel: "取消",

buttons: buttonTit

}, function(b) { /*actionSheet 按钮点击事件*/

switch (b.index) {

case 0:

break;

case 1:

Vue.getImage(); /*拍照*/

break;

case 2:

Vue.galleryImg(); /*打开相册*/

break;

default:

break;

}

})

}

},

// 拍照获取图片  

getImage: function() {

var c = plus.camera.getCamera();

c.captureImage(function(e) {

plus.io.resolveLocalFileSystemURL(e, function(entry) {

var imgSrc = entry.toLocalURL() + "?version=" + new Date().getTime(); //拿到图片路径  

Vue.setFile(imgSrc);

Vue.filePathList.push(imgSrc);

Vue.viewFlage =1

}, function(e) {

console.log("读取拍照文件错误:" + e.message);

});

}, function(s) {

console.log("error" + s.message);

}, {

filename: "_doc/camera/"

})

},

// 从相册中选择图片   

galleryImg: function() {

// 从相册中选择图片  

plus.gallery.pick(function(e) {

for (var i in e.files) {

var fileSrc = e.files[i];

Vue.viewFlage = 1

Vue.setFile(fileSrc);

Vue.filePathList.push(fileSrc);

}

}, function(e) {

console.log("取消选择图片");

}, {

filter: "image",

multiple: true,

//maximum: 5,

system: false,

onmaxed: function() {

plus.nativeUI.alert('最多只能选择5张图片');

}

});

},

setFile: function(fileSrc) {

var image = new Image();

image.src = fileSrc;

this.viewFlage = 1

this.fileArr.push(image);

},

removeImage: function(item, index) {

Vue.filePathList.splice(index, 1)

Vue.fileArr.splice(index, 1);

if(Vue.filePathList.length==0){

Vue.viewFlage=0;

}

},

uploadImage: function() {

var files = this.fileArr;

var wt = plus.nativeUI.showWaiting();

var task = plus.uploader.createUpload('../privilege/Upload', {

method: "POST"

},

function(t, status) { //上传完成

if (status == 200) {

alert("上传成功:" + t.responseText);

wt.close(); //关闭等待提示按钮

} else {

alert("上传失败:" + status);

wt.close(); //关闭等待提示按钮

}

}

);

//将文件集合添加到上传队列中

for (var i = 0; i < files.length; i++) {

var f = files[i];

task.addFile(f.src, {

key: i

});

}

//传其他的参数 如备注

//添加其他参数

//遍历5个input框

task.addData("comment", "test");

task.start();

}

},

watch: {}

});

mui.init({

swipeBack: true //启用右滑关闭功能

});

</script>

</body>

</html>

上一篇 下一篇

猜你喜欢

热点阅读