首页 > 编程知识 正文

js服务器解压文档介绍内容,js文件怎么解压

时间:2023-12-24 13:45:38 阅读:321882 作者:WPPC

本文目录一览:

压缩后的JS代码怎样解压缩?

一般压缩都经过混淆,如果你看到变量名都是A,B,C,D之类的无规则的命名,那就是被混淆过的,一般来说也很难阅读,就算你 还原了格式。

如果是没有混淆的,你可以试试用js的格式化工具来重新格式化一下的,比如:

/* 美化:格式化代码,使之容易阅读 */

/* 净化:去掉代码中多余的注释、换行、空格等 */

/* 压缩:将代码压缩为更小体积,便于传输 */

/* 解压:将压缩后的代码转换为人可以阅读的格式 */

/* 混淆:将代码的中变量名简短化以减小体积,但可读性差,经混淆后的代码无法还原 */

/* 如果有用,请别忘了推荐给你的朋友: */

/* javascript在线美化、净化、压缩、解压: */

/* 以下是演示代码 */

var Inote = {};

Inote.JSTool = function(options) {

this.options = options || {};

};

Inote.JSTool.prototype = {

_name: 'Javascript工具',

_history: {

'v1.0': ['2011-01-18', 'javascript工具上线'],

'v1.1': ['2012-03-23', '增加混淆功能'],

'v1.2': ['2012-07-21', '升级美化功能引擎'],

'v1.3': ['2014-03-01', '升级解密功能,支持eval,window.eval,window["eval"]等的解密'],

'v1.4': ['2014-08-05', '升级混淆功能引擎'],

'v1.5': ['2014-08-09', '升级js压缩引擎'],

'v1.6': ['2015-04-11', '升级js混淆引擎']

},

options: {},

getName: function() {return this._name;},

getHistory: function() {

return this._history;}

};

var jstool = new Inote.JSTool();

iis。关于js调用并打开服务器上的word文档

1、word的打开是独占的,你不能同时对一个程序多次打开,所以理论上你的程序只能一个人用

2、这也不是js能做得了得,js控制不了服务器端

jszip.js远程读取一个zip文件

项目用到了jszip.js插件,用于在后台获取zip文件,前端解压并将模型进行在线显示.

官网

jszip的API说明为英文,例子其实也有些模糊.

远程加载一个文件, 使用官网的例子 :(自行观看);

这里作为笔记,主要是想说

promise.then(JSZip.loadAsync)

.then(function( zip ){returnzip.file("Hello.txt").async("string");

    此处可以返回一个值,返回的值就是下一个.then的实参

})

这里的zip就是读取到的zip的数据,主要的属性诸如files就是zip中的文件,可以通过zip.file(filename)的形式将该文件对象进行存储,但是这里的文件对象其实是一个promise,当我们需要使用的时候可以通过.then 的形式使用

例如: pic.then(function(data){

            //data就是该文件的数据,得到data后可以通过使用,这里就需要注意我们在存储的时候可以通过使用zip.file(filename).async(数据形式)来定义数据的存储形式,例如base64,blob,arraybuffer,其中base64是图片的存储格式,但是是没有前缀的,必须加相应的前缀才可以显示.data:image/png;base64;就可以直接赋值给image.src;

})

js 如何读取xml文档内容

先判断浏览器,然后读取xml数据就可以了

//判断不同的浏览器

function InitMf()

{

var mf_change=false;

try {

mf_change = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

mf_change = new ActiveXObject("Microsoft.XMLHTTP");

} catch (E) {

mf_change = false;

}

}

if (!mf_change typeof XMLHttpRequest!='undefined') {

mf_change = new XMLHttpRequest();

}

return mf_change;

}

读取数据

var xmlHttp = InitMf();

var HTML = "";

//获得xml文件

xmlHttp.open("GET", xmlfile+"?"+Math.random(), true);

// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定

xmlHttp.onreadystatechange=function() {

//alert(xmlHttp.status);

if (xmlHttp.readyState==4 xmlHttp.status==200) {

//ajax的XML传输的解析。获取解析的数据

var xml = xmlHttp.responseXML;

var node = xml.getElementsByTagName("item");//获得总结点

for(var i = 0 ; i node.length ; i++){

var str_t = "";

var str_d = "";

var menuHTML = "";

var elem = node[i];

//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点

var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text;

这些只是部分代码,不过已经足够了

JQuery,JS 读取远程服务器的txt文件内容

注意几点:

1 一个是端口号,注意你自己设置的是哪个端口号

2 第二个是要保证txt格式中的文件是json格式 ,不然会没有返回值。

3 不要在本地直接打开 ,放在本地服务器上,apache之类的

nodejs实现一个word文档解析器思路详解

之前项目里遇到一个需求,需要前端上传一个word文档,然后后端提取出该文档的指定位置的内容并保存。这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过word这种类型的文档,怎么解析?

Excel倒是有相关的库可以用,而且很简单

思路

搜索了好一会儿,在npm上发现了一个叫做

adm-zip

的包,这个包可以解压缩word文档,原来word文档也是可以解压缩的,之前一直不知道,通过如下代码就可以将word文档解压缩,并进一步提取内容

var

admZip

=

require('adm-zip');

const

zip

=

new

admZip('test.docx');

//将该docx解压到指定文件夹result下

zip.extractAllTo("./result",

/*overwrite*/true);

首先我们新建一个docx文档,内容如下

然后运行上述代码进行解压缩,得到如下的文件,由下图可以看出生成了好几个文件夹,word的内容其实是在word文件夹里的document.xml文件内(这里解压缩后其实源文件还在,并没有消失)

进入word文件夹后的内容

我们继续打开document.xml文件来一探究竟里面到底是啥?注意要用浏览器直接打开,如果用ide打开显示出的所有内容都在一行,无法阅读!

上图只是word文档的一部分,会发现word文档内看着只有几段文字,但是xml中却是长篇大论,仔细分析下也很正常,xml全称可扩展标记语言,其被设计为传输和存储数据,它仅仅是一个纯文本的表示,而word中内容格式千变万化,肯定需要一种方法来有效描述这些内容的格式,因此采用了xml来描述

我们尝试一下将

测试文档

四个字加粗变色倾斜字体,如下图

然后再进行解压缩,得到docuemnt.xml并查看对应的内容,如下

这就很明显了,

w:b/

表示文字加粗,

w:i/

表示文字倾斜,

w:color

表示文字的颜色,所以这么4个字就需要这几行xml来描述,因此长篇大论的xml也就不足为奇

提取内容

上面说到了xml仅仅是一个文本的表示,我们可以用如下代码读取整个xml的内容,结果是一个

string

var

contentXml

=

zip.readAsText("word/document.xml");

接下来是重点,如何提取我们想要的内容呢,答案是正则表达式,首先我们得分析一下word文档的结构,word文档其实是由叫做

Paragraph

的段落所构成,在vb中可以很轻松的获取并修改段落,官网传送门点此

那么到底怎么样才是一个

Paragraph

呢,其实很简单,仔细观察word文档,见到下图中的小箭头了么,每个小箭头前面的内容就是一个段落,那么下图中一共有16个

Paragraph

,当然有些段落是空的,没有任何内容

我们再来研究xml的结构,收起展开的xml,如下图,发现

w:p/w:p

这么个标签就是表示的一个段落,中间还有些

w:p

藏在表格内,这么一看表格前面3个段落,后面3个段落,和上图是对应的

因此,

我们就可以提取出每个段落的文本并返回一个数组,每一项就是一个段落的内容

,这样就能够完整的解析出整个word的内容,关键在于如何提取每个

w:p

的内容,我们继续展开一个

w:p

进行观察,如下图,发现内容虽多,其实文本都保存在

w:t

中间,因此思路就清晰了,

首先用正则表达式提取出所有w:p的内容,再针对每个w:p的内容,进行进一步正则提取,提取出其里面所有w:t的内容,并拼接在一起构成一个段落的总内容

具体代码

下面是具体的提取代码

//参数是word文件名,第二个参数是回调表示解析完成

var

parser

=

function

parseWordDocument(absoluteWordPath,callback){

//返回内容的数组

var

resultList

=

[];

//如果文件存在

fs.exists(absoluteWordPath,

function(exists){

if(exists){

//解压缩

const

zip

=

new

admZip(absoluteWordPath);

//将document.xml(解压缩后得到的文件)读取为text内容

var

contentXml

=

zip.readAsText("word/document.xml");

//正则匹配出对应的w:p里面的内容,方法是先匹配w:p,再匹配里面的w:t,将匹配到的加起来即可

//注意?表示非贪婪模式(尽可能少匹配字符),否则只能匹配到一个w:p/w:p

var

matchedWP

=

contentXml.match(/w:p.*?.*?/w:p/gi);

//继续匹配每个w:p/w:p里面的w:t,这里必须判断matchedWP存在否则报错

if(matchedWP){

matchedWP.forEach(function(wpItem){

//注意这里w:t的匹配,有可能是w:t

xml:space="preserve"这种格式,需要特殊处理

var

matchedWT

=

wpItem.match(/(w:t.*?/w:t)|(w:ts.[^]*?.*?/w:t)/gi);

var

textContent

=

'';

if(matchedWT){

matchedWT.forEach(function(wtItem){

//如果不是w:t

xml:space="preserve"格式

if(wtItem.indexOf('xml:space')===-1){

textContent+=wtItem.slice(5,-6);

}else{

textContent+=wtItem.slice(26,-6);

}

});

resultList.push(textContent)

}

});

//解析完成

callback(resultList)

}

}else{

callback(resultList)

}

});

};

注意一下如果段落前有空格,那么

w:t

的格式是不同的,如下,多了这个space描述,所以需要特殊处理

代码量其实很少,关键在于正则的编写,上述docx文档提取后的输出结果如下

最后我把这个工具写成了一个npm包,地址点这里

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。