关于B/S模式CGI上传文件,遇到的问题概括(待更新。。。)

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

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

(1)框架部分:app

 

(2)JS部分:框架

 

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

(3)JS文件属性函数:post

(4)JS完成上传:测试

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

(5)回调函数以下:编码

进度条:spa

(6)CGI接收:

 

回调函数:

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

 

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

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

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

同时网页也会提示:

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

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

而后从新make,重启boa服务器!

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

压缩包其实就是个文件,所以和单个文件传输原理是同样的,并且代码也很相似,若是是单个文件,保存到后台,经过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好像有命令执行成功,等待测试成功了再继续更新!!!

相关文章
相关标签/搜索