在工作中难免需要对外提供一些我们抓取的log或者操作视频之类的资料,但由于工作环境日渐规范和严格,公司的网络环境和客户的网络环境是被独立开来的。这样做的好处不必多说,但同时也给我们工作带来的诸多不便。客户的网络无法访问万维网,就无法对外输出资料。但程序员们是不会被困难打到的,于是就有了下面这个对外输出资料的流程:

1.将资料push进手机

2.在手机端下载网盘并登录

3.上传资料

4.在公司的内网登录网盘

5.从网盘下载资料

6.对外输出资料

完美。使用这六个步骤完全解决了对外输出资料的难题,但随着时间的推移我们慢慢会发现,手里的手机经常要刷机,每次一刷机,之前装的网盘工具就没有了。于是我们会重复做第【2】个步骤,这种重复就跟被罚抄写单词一样乏味。

记得曾经听过这么一句话“一切输入都是罪恶的”。意思就是在软件设计和开发当中,尽量避免让用户做输入操作而多让用户做选择操作。重复的输入操作会让用户产生疲惫。而在上述六个步骤中【2】【4】都有登录操作。

灵感来源

支付宝有一个功能就是在当前的浏览器端不支持支付宝的插件的情况下,只需要扫描页面上的二维码便可以使用手机端支付,手机端支付完成后浏览器端的页面会自动刷新并显示付款成功。

那么支付宝的这个功能能给我们带来怎么样的启示呢?是否有这么一种情形:我们在手机浏览器上上传一份资料,接着不需要我们做任何事情,那份资料自动出现在另一个浏览器的页面上,我们只需要下载下来便可。

具体实现

在手机浏览器上传一个文件A后会暂存在了服务器的磁盘上,这时另一个浏览器端要如何得知它所需要A文件已经存在于服务器磁盘上了?如果不需要用户登录,也不需要用户输入什么信息的话怎么去唯一识别和定位这个文件呢?这里我想到了二维码,将二维码作为服务器,手机端,PC端浏览器之间信息交流的“信使”。

“信使”飞行流程如下:

1.浏览器请求www.contentshell.com

2.服务器会根据当前请求返回一个唯一的ID(信使),然后将这个ID信息存储进二维码并返回给PC端的浏览器

3.PC端浏览器接受到响应后将二维码显示在屏幕上并通过ID信息不间断的查询server是否存在这个文件,如果存在则将该文件的下载链接显示到浏览器上。

4.手机端扫描二维码,通过二维码获得该唯一ID

5.选择指定文件并且将该文件同【4】中获得的ID一并上传给server,server接收到mobile传递上来的文件后会根据ID来给文件命名

6.当【5】完成后,PC端浏览器就能成功从server查询到ID对应的文件并将该文件的下载链接显示在网页上。

技术堆栈

1.bootstrap框架搭建前台页面

2.node js编写后台服务器代码

最终设计效果

使用contentshell上传文件步骤:

1.将资料push进手机

2.扫描二维码

3.上传资料

4.下载资料

5.对外输出资料

可扩展内容

1.使用数据库进行文件数据保存。

2.支持文件持久保存和文件一次性使用即毁。

3.支持文件分享功能。

4.支持大文件断点上传。

基于Web和二维码的文件传输服务的更多相关文章

  1. simple go web application & 二维码生成 & 打包部署

    go语言简易web应用 & 二维码生成及解码 & 打包部署 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/10801476.html 前言(闲 ...

  2. 基于Zxing的二维码的二维码扫描之横屏扫描

    最近项目条码扫描要改为横屏,网上所搜了一下,然后发现我写的需要改动几行代码就可以了,还是很给力的. 如未查看之前的代码,请移步: 基于Zxing的二维码生成和二维码扫描 修改下面写代码就可以实现横屏条 ...

  3. 基于zxing的二维码(网格)扫描

    基于zxing的二维码(网格)扫描 前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描, 二维码原理介绍: 二维码是用某种特定的几何 ...

  4. 基于nginx实现二维码下载安装apk文件

    将apk文件置于nginx目录下 <!--进入nginx安装路径--> /usr/local/nginx <!--新建放apk的目录--> mkdir -p resources ...

  5. 聊聊 Web 项目二维码生成的最佳姿势

    在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...

  6. 基于canvas的二维码邀请函生成插件

    去年是最忙碌的一年,实在没时间写博客了,看着互联网行业中一个又一个人的倒下,奉劝大家,健康要放在首位,保重身体.好了,言归正传,这是17年的第一篇博文,话说这天又是产品同学跑过来问我说:hi,lenn ...

  7. 基于java生成二维码

                                                                                            二维码  二维码的概念 ...

  8. iOS中 基于LBXScan库二维码扫描 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后 ...

  9. ajax 轮询(适合web端二维码请求)

    (前几天 一直弄二维码轮询登录 想了半天 总算弄出来了 分享给大家    ^-^) 轮询: 所谓轮询 肯定需要 setInterval   但是怎么加ajax请求  需要有点小问题而且轮询成功后需要停 ...

随机推荐

  1. 飞机3D轨迹绘制(经度-纬度-高度)

    使用Python绘制 #绘制三维直线图,将飞机飞行的航迹用(经度,纬度和高度)来描述 #******************************************************** ...

  2. hihoCoder[Offer收割]编程练习赛1题目解析

    题目1 : 九宫 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi近期在教邻居家的小朋友小学奥数.而近期正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不反 ...

  3. 怎样防止应用因获取IDFA被AppStore拒绝

    由于Appstore禁止不使用广告而採集IDFA的app上架,友盟提供IDFA版和不含IDFA版两个SDK,两个SDK在数据上并没有差异.採集IDFA是为了防止今后由于苹果可能禁止眼下使用的openu ...

  4. JavaScript中使用JSON,即JS操作JSON总结

    JSON(JavaScript Object Notation 对象标记) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生 ...

  5. JS -判断、监听屏幕横竖屏切换事件

    通过监听window.orientationchange事件,当横竖屏切换事件时触发 <!doctype html> <html> <head> <title ...

  6. 在Visual Studio 2013顯示SCSS詳細錯誤訊息

    在WebEssentials套件加持之下,Visual Studio 2013可以直接編修SCSS,每次存檔自動編譯出css.min.css及.map,非常方便.但初心者如我,寫錯語法在所難免,一旦造 ...

  7. Java并发编程(二):JAVA内存模型与同步规则

    一.Java内存模型(JMM) 它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.一个线程如何和何时能看到其他线程共享变量的值,以及在 ...

  8. CentOS下yum常用命令

    1.自动搜索最快镜像插件:yum install yum-fastestmirror 2.更换163的源. 首先:备份/etc/yum.repos.d/CentOS-Base.repomv /etc/ ...

  9. Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序。。

    Atitit.使用引擎加脚本架构的设计 使用php,js来开发桌面程序.. 1. 引擎加脚本架构 跨平台,桌面与web的优势1 2. 架构桌面引擎(java,c#)2 3. php桌面引擎要点2 3. ...

  10. redis源码学习_字典

    redis中字典有以下要点: (1)它就是一个键值对,对于hash冲突的处理采用了头插法的链式存储来解决. (2)对rehash,扩展就是取第一个大于等于used * 2的2 ^ n的数作为新的has ...