使用WEUI uploader上传图片,博主费了很大的劲总算找到完整的了,并且带后台接收代码,有需要的朋友拿去吧,亲测可用!
一、html代码
<
link
rel
=
"stylesheet"
href
=
"https://res.wx.qq.com/open/libs/weui/0.3.0/weui.css"
/>
|
<
div
class
=
"weui_uploader"
>
<
div
class
=
"weui_uploader_hd weui_cell"
>
<
div
class
=
"weui_cell_bd weui_cell_primary"
>图片上传</
div
>
<
div
class
=
"weui_cell_ft js_counter"
>0/6</
div
>
</
div
>
<
div
class
=
"weui_uploader_bd"
>
<
ul
class
=
"weui_uploader_files"
>
<!-- 预览图插入到这 -->
</
ul
>
<
div
class
=
"weui_uploader_input_wrp"
>
<
input
class
=
"weui_uploader_input js_file"
type
=
"file"
accept
=
"image/jpg,image/jpeg,image/png,image/gif"
multiple
=
""
></
div
>
</
div
>
</
div
>
|
二、JS代码
$(
function
() {
// 允许上传的图片类型
var
allowTypes = [
'image/jpg'
,
'image/jpeg'
,
'image/png'
,
'image/gif'
];
// 1024KB,也就是 1MB
var
maxSize = 1024 * 1024;
// 图片最大宽度
var
maxWidth = 300;
// 最大上传图片数量
var
maxCount = 6;
$(
'.js_file'
).on(
'change'
,
function
(event) {
var
files = event.target.files;
// 如果没有选中文件,直接返回
if
(files.length === 0) {
return
;
}
for
(
var
i = 0, len = files.length; i < len; i++) {
var
file = files[i];
var
reader =
new
FileReader();
// 如果类型不在允许的类型范围内
if
(allowTypes.indexOf(file.type) === -1) {
$.weui.alert({text:
'该类型不允许上传'
});
continue
;
}
if
(file.size > maxSize) {
$.weui.alert({text:
'图片太大,不允许上传'
});
continue
;
}
if
($(
'.weui_uploader_file'
).length >= maxCount) {
$.weui.alert({text:
'最多只能上传'
+ maxCount +
'张图片'
});
return
;
}
reader.onload =
function
(e) {
var
img =
new
Image();
img.onload =
function
() {
// 不要超出最大宽度
var
w = Math.min(maxWidth, img.width);
// 高度按比例计算
var
h = img.height * (w / img.width);
var
canvas = document.createElement(
'canvas'
);
var
ctx = canvas.getContext(
'2d'
);
// 设置 canvas 的宽度和高度
canvas.width = w;
canvas.height = h;
ctx.drawImage(img, 0, 0, w, h);
var
base64 = canvas.toDataURL(
'image/png'
);
// 插入到预览区
var
$preview = $(
'<li class="weui_uploader_file weui_uploader_status" style="background-image:url('
+ base64 +
')"><div class="weui_uploader_status_content">0%</div></li>'
);
$(
'.weui_uploader_files'
).append($preview);
var
num = $(
'.weui_uploader_file'
).length;
$(
'.js_counter'
).text(num +
'/'
+ maxCount);
// 然后假装在上传,可以post base64格式,也可以构造blob对象上传,也可以用微信JSSDK上传
var
progress = 0;
function
uploading() {
$preview.find(
'.weui_uploader_status_content'
).text(++progress +
'%'
);
if
(progress < 100) {
setTimeout(uploading, 30);
}
else
{
// 如果是失败,塞一个失败图标
//$preview.find('.weui_uploader_status_content').html('<i class="weui_icon_warn"></i>');
$preview.removeClass(
'weui_uploader_status'
).find(
'.weui_uploader_status_content'
).remove();
}
}
setTimeout(uploading, 30);
};
img.src = e.target.result;
$.post(
"/wap/uploader.php"
, { img: e.target.result},
function
(res){
if
(res.img!=
''
){
alert(
'upload success'
);
$(
'#showimg'
).html(
'<img src="'
+ res.img +
'">'
);
}
else
{
alert(
'upload fail'
);
}
},
'json'
);
};
reader.readAsDataURL(file);
}
});
});
|
三、PHP代码
$img
= isset(
$_POST
[
'img'
])?
$_POST
[
'img'
] :
''
;
// 获取图片
list(
$type
,
$data
) =
explode
(
','
,
$img
);
// 判断类型
if
(
strstr
(
$type
,
'image/jpeg'
)!=
''
){
$ext
=
'.jpg'
;
}
elseif
(
strstr
(
$type
,
'image/gif'
)!=
''
){
$ext
=
'.gif'
;
}
elseif
(
strstr
(
$type
,
'image/png'
)!=
''
){
$ext
=
'.png'
;
}
// 生成的文件名
$photo
=
"../upload/"
.time().
$ext
;
// 生成文件
file_put_contents
(
$photo
,
base64_decode
(
$data
), true);
// 返回
header(
'content-type:application/json;charset=utf-8'
);
$res
=
array
(
'img'
=>
$photo
);
echo
json_encode(
$res
);
|