最近一周(做了一周的原因在最后)在做一个巡检功能:后台分配设备给不同角色用户,角色用户在前端读取自己能访问的设备列表,然后对应列表去进行检查,返回信息以及拍照上传回后台。大概就是这个样子滴~
<div>
<div id="preview"></div>
<div class="upload-wrap upload-item">
<img src="./static/images/plus (1).png" alt="上传">
<input type="file" id="upload" name="imageFile[]" accept="image/jpg, image/jpeg, image/png, image/gif" class="upload-btn" id="empty-upload" multiple>
</div>
<div class="c"></div>
</div>
define(function (require, exports, module) {
require(['./_common', 'jquery', 'config'], function () {
$(function () {
var upload = document.querySelector('#upload')
preview = document.querySelector('#preview')
maxSize = 200 * 1024
upload.addEventListener('change', function () {
var file = this.files[0];
var reader = new FileReader();
reader.onload = function (e) {
compress(this.result);
};
reader.readAsDataURL(this.files[0]);
this.value = null;
})
//获取mac值并显示在地址详情中
var mac = getP('mac')
$('.mac').val(mac)
$.ajax({
url: '',
type: "POST",
crossDomain: true,
dataType: "json",
data: {
mac: mac
},
success: function (res) {
var _mac = res;
$('.address').html(_mac)
$('#header').append(res)
}
})
$(document).on("click", ".jq_closeimg", function () {
$(this).parents('.upload-wrap').remove();
var imgAddr = $(this).siblings('input').val()
$.ajax({
url: '',
type: 'post',
data: {
absPath: imgAddr
},
success: function (res) {
// console.info(res)
},
error: function (e) {
alert('error')
}
})
})
//提交按钮触发事件
$('.btn-submit').on('click', function () {
//do something
})
})
//获取url参数
function getP(n) {
var hrefstr, pos, parastr, para, tempstr;
hrefstr = window.location.href;
pos = hrefstr.indexOf("?");
parastr = hrefstr.substring(pos + 1);
para = parastr.split("&");
tempstr = "";
for (var i = 0; i < para.length; i++) {
tempstr = para[i];
pos = tempstr.indexOf("=");
if (tempstr.substring(0, pos).toLowerCase() == n.toLowerCase()) {
return tempstr.substring(pos + 1);
}
}
return '';
}
function compress(res) {
var img = new Image(),
maxH = 400;
img.onload = function () {
var cvs = document.createElement('canvas'),
ctx = cvs.getContext('2d');
if (img.height > maxH) {
img.width *= maxH / img.height;
img.height = maxH;
}
cvs.width = img.width;
cvs.height = img.height;
ctx.clearRect(0, 0, cvs.width, cvs.height);
ctx.drawImage(img, 0, 0, img.width, img.height);
var dataUrl = cvs.toDataURL('image/jpeg', 0.5);
// 单张上传
imgUpload(dataUrl)
}
img.src = res;
}
function imgUpload(_url) {
$.ajax({
url: '',
type: 'post',
data: {
imageFile: _url
},
success: function (res) {
if (res.success === true) {
var imgUrl = res.data
var tmp =
'<div class="upload-wrap upload-item inputfile_gardenmax"><input name="imgAddr" type="hidden" value="' +
imgUrl +
'"><b class="closeimg jq_closeimg"><img src="./static/images/close-circle-fill.png" alt=""></b><img src="' +
_url + '" alt=""></div>';
$('#preview').append(tmp)
}
},
error: function (e) {
alert('error')
}
})
}
})
})
大致的流程就是这样,做了简单预览->压缩->上传,里面还有许多可优化的地方,比如压缩可以根据原始图片比进行压缩避免变形失真等问题,移动端Android和IOS有不同程度的bug等等问题,仅供参考吧!
被Java支配的恐惧