在工作中难免需要对外提供一些我们抓取的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. timedelta

    from datetime import datetime start="09:35:23" end="10:23:00" start_dt = datetim ...

  2. Mac /Ubuntu/Windows 下安装nodejs

    Mac If you're using the excellent homebrew package manager, you can install node with one command: b ...

  3. jfinal的configPlugin基本配置代码

    直接上代码: public void configPlugin(Plugins me) { // 这里是在数据库的配置文件中读取数据库的一些信息 DruidPlugin dbPlugin = new ...

  4. erlang四大behaviour之一gen_server(转载)

    erlang程序设计里面有个设计原则就是把你的进程构造成树,把共用代码提出来,特定功能用自己的module实现,这也就是behaviour了,应用behaviour可以减少与本身事务无关的代码量,设计 ...

  5. python对象序列化之pickle

    本片文章主要是对pickle官网的阅读记录. The pickle module implements binary protocols for serializing and de-serializ ...

  6. python之圆周率

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: pi.py #Author: ...

  7. csu-1328 近似回文词 和 最长回文字符串

    原博文地址:http://blog.csdn.net/u012773338/article/details/39857997 最长回文子串 描述:输入一个字符串,求出其中最长的回文子串.子串的含义是: ...

  8. node多项目同时运行,nginx端口监听转发

    在服务器端安装pm2 npm install npm2 -g --save 之后再项目目录下运行 pm2 start app.js 在查看进程,是否已经启动 pm2 list 多个项目,我们只要监听端 ...

  9. Hello,Ajax

    学习了Ajax技术,写了一个最简单的Ajax应用 <%@page contentType="text/html; charset=utf-8" language=" ...

  10. django 模板报错

    "Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define the ...