- @private
*/
function _checkContatinsElements()
{
return !!$(_uploadEle).find(“li”).size();
}
/**
-
当ondragenter触发
-
@private
*/
function _onDragEnter(ev)
{
_setDragOverStatus();
}
/**
-
当ondargmove触发
-
@private
*/
function _onDragOver(ev)
{
//ondragover中必须组织事件的默认行为,默认地,无法将数据/元素放置到其他元素中。
ev.preventDefault();
}
/**
-
当dragleave触发
-
@private
*/
function _onDragLeave(ev)
{
_setStatusNoDrag();
}
/**
-
ondrop触发
-
@private
*/
function _onDrop(ev)
{
//drop 事件的默认行为是以链接形式打开,所以也需要阻止其默认行为。
ev.preventDefault();
_setDropStatus();
//拿到拖入的文件
var files = ev.dataTransfer.files;
var len = files.length;
for (var i = 0; i < len; i++)
{
//页面上显示需要上传的文件
_showUploadFile(files[i]);
}
}
/**
-
页面上显示需要上传的文件
-
@private
*/
function _showUploadFile(file)
{
var reader = new FileReader();
// console.log(file)
// console.log(reader);
//判断文件类型
if (file.type.match(/image*/))
{
reader.onload = function (e)
{
var formData = new FormData();
var li = $(“#template li”).clone();
var img = li.find(“img”);
var progress = li.find(“.progress”);
var percentage = li.find(“.percentage”);
percentage.text(“0%”);
img.attr(“src”, e.target.result);
$(“ul”, $(_uploadEle)).append(li);
$(_uploadEle).find(“li”).size() == 10 && ( u p l o a d E l e ) . w i d t h ( ( (_uploadEle).width(( (uploadEle).width(((_uploadEle).width() + 8) + “px”).css(“overflow”, “auto”);
formData.append(“uploadFile”, file);
//上传文件到服务器
_uploadToServer(formData, li, progress, percentage);
};
reader.readAsDataURL(file);
}
else
{
console.log(“此” + file.name + “不是图片文件!”);
}
}
/**
-
上传文件到服务器
-
@private
*/
function _uploadToServer(formData, li, progress, percentage)
{
var xhr = new XMLHttpRequest();
xhr.open(“POST”, “http://localhost:8080/strurts2fileupload/uploadAction”, true);
xhr.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’, ‘Content-Type’, ‘multipart/form-data;’);
//HTML5新增的API,存储了上传过程中的信息
xhr.upload.onprogress = function (e)
{
var percent = 0;
if (e.lengthComputable)
{
//更新页面显示效果
percent = 100 * e.loaded / e.total;
progress.height(percent );
percentage.text(percent + “%”);
percent >= 100 && li.addClass(“done”);
}
};
xhr.send(formData);
}
//把init方法公布出去
return{
init: _init }
})();
注释写得很详细,这次没有直接使用字面量创建对象,因为我不希望使用者可以访问所有的方式和变量,使用了简单的闭包,可以看出几乎所有的方法和变量都是_开头,是因为我认为它们是私有的,我也没有公布出来,唯一公布的就是init方法,供使用者调用。整体方法也使用了命名空间,这样和其他伙伴写的js基本不做造成变量相同的问题。
上面的js中用到了HTML FileApi,这里介绍一下:
1、File对象也就是我们上面使用的:
File
-
lastModifiedDate: Thu Dec 26 2013 18:45:08 GMT+0800 (中国标准时间)
-
name: “yt_key.png”
-
size: 45524
-
type: “image/png”
-
webkitRelativePath: “”
-
__proto__: File
可以看到包含上面的一些属性,也就是说,如果使用支持html5的浏览器,给input=type设置onchange事件,用户选择图片或者文件后,就可以做出图片的显示或者文件大小和类型的判断。
2、FileReader主要用于异步读取文件内容,注意是异步的,上例我们使用了它的readAsDataURL的方法,关于DataUri的知识可以自己去百度下。
另外还提供了:readAsText用于读取文本;readAsArrayBuffer和readAsBinaryString方法;
还提供了一些事件:onloadstart, onload, onprogress ,onerror , onloaded , onabort 有兴趣的可以去一个一个查看。
最后页面调用,大功告成:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
学习福利
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
[外链图片转存中…(img-YK9LkRzb-1712788640746)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-EZNCqp5S-1712788640747)]