一种批量压缩swf文件的方法
技术领域
本发明涉及互联网应用技术领域,尤其涉及一种批量压缩swf文件的方法。
背景技术
在现有的技术当中,如果需要对swf文件压缩的话,通常是在本地利用软件直接对swf文件压缩,或自行编写一个swf程序,用该程序在本地对文件压缩。而如果需要对多个swf文件进行压缩处理的话,现有技术中都是对每一个swf文件分别处理;
这种单个本地处理方式,如果在需要处理的文件只有几个的情况下还是可以接受的,但如果需要处理大批量的文件(比如几十个甚至几百个甚至更多)的情况下,此种单个处理swf文件的方式就显得太费时费力了。
发明内容
本发明的目的在于提供一种批量压缩swf文件的方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种批量压缩swf文件的方法,包括以下步骤:
S1,接收请求端上传的源swf文件集合,所述源swf文件集合包括一个以上的源swf文件;
S2,依次判断所述源swf文件集合中的各个所述源swf文件是否已经被压缩过;
如果判断为没有被压缩过,则执行S3;如果判断为已经被压缩过,则继续对下一个所述源swf文件进行判断,直到判断完毕所述源swf文件集合中的所有所述源swf文件,然后执行S4;
S3,对没有压缩过的所述源swf文件进行压缩处理,压缩完毕后继续对下一个没有被压缩过的所述源swf文件进行压缩处理,直到处理完毕所述源swf文件集合中的所有没有被压缩过的所述源swf文件;然后执行S4;
S4,将经S2判断为已经被压缩过的所述源swf文件和经S3压缩处理过并生成的目标swf文件发送至所述请求端。
优选的,S1和S2之间还包括以下步骤:
为接收到的所述源swf文件集合中的各个所述swf文件分配顺序编号;
按照所述顺序编号依次处理各个所述源swf文件。
优选的,S2具体包括以下步骤:
S21,根据所述顺序编号确定当前需要处理的源swf文件;
S22,以二进制流方式读取所述当前需要处理的源swf文件;
S23,解析所述当前需要处理的源swf文件的文件头,得到文件头信息;
S24,如果所述文件头信息中的前三个字节为“CWS”,则确定所述文件头信息所对应的源swf文件是已经被压缩过的源swf文件;如果所述文件头信息中的前三个字节为“FWS”,则确定所述文件头信息所对应的源swf文件是没有被压缩过的源swf文件。
优选的,S3具体包括以下步骤:
S31,将需要压缩的源swf文件中从第九个字节到所述源swf文件尾的全部内容读入到内存中;
S32,调用zlib库的压缩函数compress,对所述读入到内存中的内容进行压缩处理;
S33,压缩处理完毕后,将压缩后得到的内容与所述第九个字节之前的字节合并,同时将最前边的三个字节修改为“CWS”,最终得到完整的经过压缩的目标swf文件。
优选的,S4具体包括以下步骤:
S41,将经S2判断为已经被压缩过的所述源swf文件和经S3压缩处理过并生成的目标swf文件打包成一个文件压缩包;
S42,将所述文件压缩包发送至所述请求端。
优选的,所述文件压缩包为zip压缩包。
优选的,在S1前还包括以下步骤:
接收包含有多个所述源swf文件的文件压缩包;
解压缩所述文件压缩包,得到所述源swf文件集合。
优选的,所述文件压缩包为zip压缩包。
本发明的有益效果是:
本发明将压缩处理过程从本地移至服务器中执行,并加以批处理策略,从而实现了批量的快速的压缩swf文件的目的,通过本发明所提供的技术方案可以快速的对大量swf文件进行压缩处理,提高了工作效率;
压缩处理过的swf文件,体积变小,从而更利于在网络中传输,同时在一定程序上保护了swf文件防止swf被非法修改;
另外由于压缩过程是在服务器中执行,所以可以处理多个请求端的请求,从而提高了服务器的资源使用率,减少了服务器资源的闲置浪费的时间。
附图说明
图1是本发明的步骤流程图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明的批量压缩swf文件的方法,包括以下步骤:
S1,接收请求端上传的源swf文件集合,所述源swf文件集合包括一个以上的源swf文件;为了提高源swf文件的上传速度,在上传前还可以把需要上传的源swf文件打包成一个zip文件包,批处理服务器接收到所述zip文件包后,将其解压缩,得到源swf文件集合。然后为接收到的所述源swf文件集合中的各个所述swf文件分配顺序编号;按照所述顺序编号依次处理各个所述源swf文件。
S2,依次判断所述源swf文件集合中的各个所述源swf文件是否已经被压缩过;
如果判断为没有被压缩过,则执行S3;如果判断为已经被压缩过,则继续对下一个所述源swf文件进行判断,直到判断完毕所述源swf文件集合中的所有所述源swf文件,然后执行S4;
具体的,S2又包括以下步骤:
S21,根据所述顺序编号确定当前需要处理的源swf文件;
S22,以二进制流方式读取所述当前需要处理的源swf文件;
S23,解析所述当前需要处理的源swf文件的文件头,得到文件头信息;
S24,如果所述文件头信息中的前三个字节为“CWS”,则确定所述文件头信息所对应的源swf文件是已经被压缩过的源swf文件;如果所述文件头信息中的前三个字节为“FWS”,则确定所述文件头信息所对应的源swf文件是没有被压缩过的源swf文件。
S3,对没有压缩过的所述源swf文件进行压缩处理,压缩完毕后继续对下一个没有被压缩过的所述源swf文件进行压缩处理,直到处理完毕所述源swf文件集合中的所有没有被压缩过的所述源swf文件;然后执行S4;S3具体包括以下步骤:
S31,将需要压缩的源swf文件中从第九个字节到所述源swf文件尾的全部内容读入到内存中;
S32,调用zlib库的压缩函数compress,对所述读入到内存中的内容进行压缩处理;
S33,压缩处理完毕后,将压缩后的内容与所述第九个字节之前的字节合并,同时将最前边的三个字节修改为“CWS”,最终得到完整的经过压缩的目标swf文件。
S4,将经S2判断为已经被压缩过的所述源swf文件和经S3压缩处理过并生成的目标swf文件发送至所述请求端。S4具体包括以下步骤:
S41,将经S2判断为已经被压缩过的所述源swf文件和经S3压缩处理过并生成的目标swf文件打包成一个zip压缩文件;
S42,将所述zip压缩文件发送至所述请求端。这样可以提高文件的发送速度。当然S4中也可以是请求端从所述批处理服务器下载所述zip压缩文件。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明将压缩处理过程从本地移至服务器中执行,并加以批处理策略,从而实现了批量的快速的压缩swf文件的目的,通过本发明所提供的技术方案可以快速的对大量swf文件进行压缩处理,提高了工作效率;
压缩处理过的swf文件,体积变小,从而更利于在网络中传输,同时在一定程序上保护了swf文件防止swf被非法修改;
另外由于压缩过程是在服务器中执行,所以可以处理多个请求端的请求,从而提高了服务器的资源使用率,减少了服务器资源的闲置浪费的时间。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。