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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于B/S模式CGI上传文件,遇到的问题归纳(待更新。。。)相关的知识,希望对你有一定的参考价值。

    由于项目问题是基于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怎么如何接收压缩包,纠结中。。。。

希望知道的大神指教一二,谢谢!!!

以上是关于关于B/S模式CGI上传文件,遇到的问题归纳(待更新。。。)的主要内容,如果未能解决你的问题,请参考以下文章

b/s 大文件分片上传处理

b/s大文件上传解决方案支持分片断点上传

如何使用 python 请求上传文件?

C/S模式与B/S模式的详细介绍

关于图片或者文件在数据库的存储方式归纳

转-关于图片或者文件在数据库的存储方式归纳