由于项目问题是基于web的,最近一直在改进web界面,由于产品需要升级,而且升级操作是由客户在web端完成,将软件包放在本地,由web上传到后台完成更新,之前做的是TFTP更新方式,但是需要借助第三方软件,TFTP服务器,最近在网页优化的过程中感觉太麻烦,于是改成在web直接上传的方式,不借助于第三方软件。效果图:

1、文件传输:post方式,不编码,用到HTML的file属性,代码:

(1)框架部分:

(2)JS部分:

此函数包括TFTP更新和WEB更新两种方式,代码截图有点重复。。。

(3)JS文件属性函数:

(4)JS完成上传:

其中四个监听函数从上到下分别为:进度条、上传完成、上传失败和取消上传;

(5)回调函数如下:

进度条:

(6)CGI接收:

回调函数:

3、如果只是单个文件上传(非压缩包方式),这样目的就达到了,但是当打开server1的时候会注意到比源文件多了五行:

即第一行至第四行(空行),还有最后一行,我单独写了一个脚本去掉这多余的五行:

解释:第一行的意义是去掉前四行,第二行是去掉最后一行;

这样目的虽然达到了,然而在传输大文件时出现了问题,提示:

同时网页也会提示:

错误信息是文件大小已经超出了boa默认接收数据的长度,(按理说当已GET方式发送数据时才会有数据大小的限制,POST没有,具体情况还有待查证!!!也希望知道的朋友告知,谢谢!!!)

于是,我找到boa源码,打开src/defines.h,更改如下:(boa默认数据大小为1M)

然后重新make,重启boa服务器!

4、压缩包问题已经得到解决,在此感谢艳姐的提示!

压缩包其实就是个文件,因此和单个文件传输原理是一样的,而且代码也很类似,如果是单个文件,保存到后台,通过CGI将其内容读取再写到另一个文件就好了,压缩包只不过是把保存的文件格式变了而已,经验证http协议头中支持的压缩格式有两种:.zip压缩包和.rar压缩包,而这两种压缩包在http协议的MIME头部分别为Content-Type:application/x-zip-compressed和Content-Type: application/octet-stream。

zip压缩包在Linux下的压缩和解压缩命令分别为:zip和unzip;(zip all.zip *.jpg和unzip all.zip)

rar压缩包在Linux下的压缩和解压缩命令分别为:rar a all.rar *.jpg; unrar e all.rar

(在进行调用rar压缩包的相关命令时首先安装rar和unrar:sudo apt-get install rar和sudo apt-get install unrar)

代码截图如下:

http协议的MIME头部好像还有这种格式: Content-Type:application/x-gzip代表支持gzip格式的压缩包,但是由于360压缩包压缩不成该格式的,没进行测试,在网上查的得知,Linux好像有命令执行成功,等待测试成功了再继续更新!!!

  

最新文章

  1. linux 配置ssh免密码登陆本机
  2. jmeter接口测试
  3. TypeError: window.open is not a function
  4. iOS 阶段学习第八天笔记(指针)
  5. 19. javacript高级程序设计-E4X
  6. struts2封装客户端数据到Action
  7. hdu 3695:Computer Virus on Planet Pandora(AC自动机,入门题)
  8. SynchronousQueue应用
  9. hdu 5326 Work
  10. Telerik 控件事例(鼠标拖动行,拖动列,设置行对齐,行宽,是否显示)
  11. 转载总结一些关于Google chart api的知识
  12. android127 zhihuibeijing 屏幕适配
  13. 关于Ionic的安装
  14. html传參中?和&
  15. 阿斯钢iojeg9uhweu9erhpu9hyw49
  16. effective c++ 条款3 use const whereever you can
  17. 遍历输出图片加hover
  18. 关于nginx unit服务非正常关闭后,无法重新启动问题的处理
  19. Python档案袋(异常与异常捕获 )
  20. selenium截取具体元素图片(python版)

热门文章

  1. [LeetCode] 1137. N-th Tribonacci Number
  2. Tomcat源码分析一:编译Tomcat源码
  3. [go设计模式]简单工厂模式
  4. (4)一起来看下mybatis框架的缓存原理吧
  5. Java容器总结
  6. sqlmap实战-1
  7. Vue-CLI项目-axios模块前后端交互(类似ajax提交)
  8. Pillow模块图片生成
  9. ‎Cocos2d-x 学习笔记(22) TableView
  10. SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache