自制小工具含源码——博客园图床ImageBed
CnblogsImageBed —— A place to store images
说明
俗话说:好记性不如烂笔头。工作中会遇到各种各样的需求,各种各样的任务,可能当时完成了,但过一段时间回头看发现连自己都不知道当初写的代码是啥意思。大脑是用来思考的,不是用来存储记忆的。所以要经常记录一下自己的想法,以免过一段时间淡忘。
我最喜欢的习作方式是简单的文本编辑器,加上简单的可以格式化文本的代码,再配上几张精美的图片效果就perfect了。Markdown好像天生就是为这个需求而生的,美中不足的是在Sublime Text或者Notepad++中写的时候插入配图需要提供url,也就是需要一个可以存储图片的、稳定的、可以提供图片外链的服务。寻寻觅觅,寻寻觅觅发现一些云存储厂商(如七牛云存储)提供限量的免费空间、每个月限量的请求次数,要求不少,pass掉。
每天使用频率最高的网站就是cnblogs博客园,使用博客园发布文章时发现上传图片功能很好用:
- 支持常见的多种图片格式
- 上传速度快
- 支持10M一下图片
- 服务稳定(阿里云,分析Url用的貌似是又拍云存储图片服务)
唯一的缺点就是必须要求登录,于是就萌生一个想法:做一个图片上传小工具。
需求
目前基本功能是图片上传,然后获得图片的url地址。对,听起来就这么简单。
从技术角度来讲,需要克服的难点:
- Http抓包分析
- 模拟登录博客园
- 代码实现图片上传
要做一个小工具,能在windows平台运行,首选用C#开发Winform Application,在宇宙最强IDE——Visual Studio的帮助下开发效率最高了。
开发
开发详细过程就不写了,只写重点。
重点1:界面设计
界面设计如图,左右2个panel,左边是登录信息,登录成功后跳转到右侧图片上传界面,登录隐藏。
登录之前如上图,登录成功如下图:
只要选择想要上传的图片,点击上传按钮,接着在下方文本框中就能得到想要的图片外链地址。
重点2:HTTP抓包分析
这就是博客园图片上传主界面,上传一张图片用Http分析工具(用chrome develop tool就行,Fiddler有杀鸡用牛刀的感觉)跟踪一下Http请求,找到最关键的一条:
请求的最终Url是:
http://upload.cnblogs.com/imageuploader/processupload?host={0}&qqfile=
项目结构
涉及到:
- 模拟Http请求,携带Cookie的Get和Post请求
- 对服务器返回的json对象反序列化
- 方法封装,一个函数只做一件事
最后
当然,这篇文章中的图片都是来自这个小工具哦~ :)
P.S. 希望dudu看到了不会介意,毕竟这个小工具使用者不多,不会对博客园造成压力的 :)
update 2015-01-24
作者:樊勇
出处:http://www.cnblogs.com/fanyong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我的联系方式:fanyong@gmail.com
个人独立博客:www.fy98.com