在工作中难免需要对外提供一些我们抓取的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. (转)解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题

    解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题   开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Serve ...

  2. Rabbitmq消息队列(四) 发布订阅

    1.简介 在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者,在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers).这种模式被称为“发布/订阅” ...

  3. ss - float浮动模块的高度问题 解决方案

    当一个Div中的子元素都是浮动元素时,该div是没有高度的.通常会带来很多困扰,解决方案如下: 低版本统配兼容: overflow: hidden; 下面是不支持低配浏览器,而且似乎该效果对 P 标签 ...

  4. phpexcel对于中文路径和中文名称的问题(有疑问)

    phpexcel对于中文的文件名无法读取(我本地环境都是utf-8的编码) 是不是win系统识别都是gbk ?(需要把utf-8的字符串改为gbk) $file = "C:\\Users\\ ...

  5. CentOS6X安装PHP5.5

    CentOS6.x默认的php版本是php5.3,已经过时喽,现在最新的稳定版是5.5.38. 安装方法: 1.先下载2个源 rpm -Uvh https://dl.fedoraproject.org ...

  6. springboot admin server常用配置

    Property name Description Default value spring.boot.admin.context-path The context-path prefixes the ...

  7. Linux定时备份数据到百度云盘

    导读:如今的百度云盘免费容量都是2T了,即使把电脑上所有的东东都放上去,也还有大把的剩余空间.对于站长来说,是完全可以充分利用这些硬盘空间的,现在我们就用百度云盘来备份Linux服务器上的数据. 一直 ...

  8. Greatest Number 山东省第一届省赛

    Greatest Number Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Saya likes math, because ...

  9. redis-cli 常用命令

    1.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 2.对value操作的命令 exists(key):确认一个key是否存在 del(key):删除一个key ...

  10. JavaScript 数组-Array的方法总结

    JavaScript中的Array类型是经常用到的,Array类型也提供了很多方法能实现我们需求,下面我们来总结一下 一.创建Array的方法 1.使用Array构造函数 var colors=new ...