2015第8周三马年除夕

今天马年除夕,又到了各种拜年送祝福的时候,祝福大家身体健康,万事如意,羊年大吉,红包多多,运气好好!

最后摘录一些刚才看到的html5的知识

知乎web框粘贴图片的实现方法
  1. 抓包
    截个图,然后粘贴到编辑器,查看 HTTP 包,发现有对 的请求
    request 的格式是multipart/form-data; 图片的内容作为request body 的一部分一起传了过去
    这里大概就能推测出基本原理了:监听粘贴 → 获取粘贴内容 → 将内容上传
  2. 搜索代码
    在 rich_text_editor.js 里面搜索 /upload 字样,搜到了这么一段
    this.Vz = "http://upload." + Ak.Sl + ":" + location.port + "/upload"; 
    估计是设置属性,那么再搜 .Vz 看看哪里用到了,于是看到
    function zE(a, b) { var c = new FormData; c.append("via", "xhr2"); c.append("upload_file", b); var d; d = $.ajaxSettings.xhr(); d.withCredentials = i; var f = $.ajax({url: a.Vz,data: c,processData: l,contentType: l,xhr: function() { return d },type: "POST"}).done(function(a) { 
    啊,找到了,这里应该就是发送图片数据的地方,而且用了 FormData 这个 HTML5 特性
    简单说就是 ajax 以前只能向服务器发送文本,而 HTML5 提供的 XMLHttpRequest Level2 现在支持发送二进制数据了,这里的 c.append("upload_file", b) 里面 b 应该就是那个图片的二进制数据
  3. 打断点
    继续追踪就容易多了,只要在这个地方打个断点,然后往编辑器里面粘贴一个截图
    Chrome 调试工具的 Call Stack 就会告诉你,程序的上一步在哪里
    看一看 a 对象的属性基本可以断定它是一个 Event 对象,而且这里的这段 function 就是对粘贴事件的处理,为了验证,搜索一下 .rw 就会看到这样一段 
    a.f().addEventListener("paste", u(this.rw, this)); 
    确定推断无误,可以看到上面的处理函数中,通过 a.clipboardData 就能取到剪贴板中的数据,并且可以通过 clipboardData.types 来判断数据是不是图片。
    这么高级的 API 是哪里来的呢?搜一下就知道了 Clipboard API and events
    可以看到这个 API 属于 W3C 的标准(当然还是草案阶段),但是不属于 HTML5 
    另外代码中的重点是这么一段
    c.type.indexOf("image") && (zE(b, c.getAsFile()), a.preventDefault()) 
    zE 就是上面的那个 ajax 发送函数,而通过 c.getAsFile() 可以从剪贴板中获取二进制的数据

  4. 结论
    通过 Clipboard API 可以在用户粘贴时获知粘贴的内容,包括内容的格式(是否为图片),内容的二进制数据等等
    通过 XMLHttpRequest Level2 可以实现将二进制数据以 ajax 的方式发送到服务器,即实现了上传功能
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值