AutoCAD中,我绘制了一个cad螺旋线画法,然后使用express->modify->flatten objects,把cad螺旋线画法变成了

Express Tools的功能不用多说,但是刚开始接触CAD的同学,在安装CAD的过程中,往往会取消安装这项功能.对于新手来说,其实我们完全没有必要重新安装CAD软件,那样只会浪费时间,接下来请看怎样加载Express Tools. 工具/原料 电脑 已经安装好了的AutoCAD软件 方法/步骤 打开&控制面板&,如
解决AutoCAD中不显示Express Tools菜单的方法. 方法/步骤 开启AutoCAD,在命令行里输入CUILOAD,打开加载/卸载自定义设置窗口. 在上面窗口中选择浏览,在如下的文件夹下选择文件acetmain.cuix C:\Users\&电脑用户名&\AppData\Roaming\Autodesk\A
CAD中常常要填充一些图形,来表示所用的材质,但CAD本身加载的图形有限,很多时候感觉不够用,那如何去加载更多的.自己想要的填充图形呢? 工具/原料 AutoCAD CAD填充图案(.pat 格式) 方法/步骤 打开AutoCAD2012 快捷键op或者右击-选项 选项-文件-支持文件搜索路径(首先:把下载好的CAD填
AutoCAD加载菜单有两个命令:menu和menuload.何时使用menu,何时使用nenuload?首先必须明白AutoCAD菜单是有等级之分的,分为基础菜单和局部(或称附加)菜单. 顾名思义,基础菜单是AutoCAD使用是菜单的基础,在AutoCAD中同时只能使用一个菜单文件作为基础菜单,acad.mnu是安装时缺省的基础菜单.menu命令专用于更换或重新加载一个基础菜单,AutoCAD启动时缺省的基础菜单是上一次通过menu命令调入的菜单. 局部菜单和基础菜单在文件体系上没有区别.在基础菜单之上
这里就不介绍R语言了,也不想浪费篇幅.呵呵! 主要分享一下R包的安装,加载包,查看当前使用的包,怎样移除已经加载的包以及彻底卸载安
解决方法: IE11无法正常加载战地的浏览器插件,安装后仍然会反复提示安装,无法使用.如果不想更换其他浏览器,可以按照以下方法使IE11可以正常加载.首先关闭IE11的增强保护模式.Internet选项--高级--启用增强保护模式(将前面的勾去掉),然后点击Internet选项,选择安全,选择 本地internet图标
这边与大家同享关于加载iso镜像的方法,加载iso镜像可以用来装置系统,咱们可以运用虚拟光驱加载iso,先制作好u盘发动盘,然后通过u盘启动便可进入pe系统履行相应操作了,下面就是具体教程. 方法/步骤 我们先制作好u盘启动盘,按开机启动快捷键进入u启动主菜单界面,选择[02]u启动win8pe标准版(新机器)并回车,
常常在虚拟机中安装操作系,比如redhat,是有4张光盘的,但是第一张安装完毕后,需要插入第二张,第三张,第四张,怎么办呢?图文教
很多用户会使用光驱加载iso镜像文件来进行安装系统,但现在很多电脑没有配备光驱,没有光驱我们就不能加载iso文件,遇到这种情况我们可以通过虚拟光驱来进行安装系统,那么接下来就给大家详细介绍u深度pe使用虚拟光驱加载iso镜像的操作方法. 方法/步骤 将制作好的u深度u盘盘插入电脑usb插口,重启电脑并按下启动快捷键,进
网页图片加载,加载效果实现 工具/原料 已安装Dreamweaver或其它网页编辑器的电脑一台 浏览效果 加载中 加载完成 加载提示信息消失 HTML代码 在body标签写HTML代码,图片src路径上百度图片复制一个图片路径就行了,注意:要用网页上的图片路径,不然效果可能实现不了,或者一闪而过. CSS样式代码 写入
u启动这边与大家分享关于加载iso镜像的方法,加载iso镜像可以用来安装系统,我们可以使用虚拟光驱加载iso,先制作好u盘启动盘,然后通过u盘启动便可进入pe系统执行相应操作了,下面便是具体教程. 工具/原料 u启动u盘启动盘 方法/步骤 1.我们先制作好u盘启动盘,按开机启动快捷键进入u启动主菜单界面,选择[02]u
Word中怎样做成网格线的文档,很多人会说用&视图&的&网格线&,但这个功能只能显示网格线,却不能够打印出来.怎么办呢,你可以试一下Word2003稿纸加载项 方法/步骤 直接去微软官网下载Word2003稿纸加载项,如果找不到的话,大家可以直接百度&Word2003稿纸加载项&即可. 下载完毕后,安装Word2003
通常用户会使用光驱加载iso镜像文件后进行安装系统,但现在很多电脑没有配备光驱,没有光驱我们就不能加载iso文件,遇到这种情况我们可以通过虚拟光驱来进行安装系统. 方法/步骤 将制作完成u深度u盘启动盘连接至电脑,重启电脑等待出现开机画面时按下启动快捷键进入启动项窗口,选择[02]运行U深度Win8PE装机维护版(新机
源:U大师 当我们想要重新去更新加载驱动,难免会遇到驱动加载失败的情况,此时该怎样处理?今天小编就来教大家在驱动出现加载失败时怎样解决的方法. 故障原因一.驱动加载失败可能原因是驱动程序本身不完全,其次就是在下载更新驱动的时候没有下载完全,一些被杀毒软件或者防火墙给拦截掉. 这种情况解决方法很简单,在下载安装驱动程序时
ZX40安装微软非OEM win7 64bit系统加载SATA驱动过程 方法/步骤 安装系统之前请先开机按F10进入BIOS,确认&Advanced-Device Configurations&下的&SATA Controller Mode&及&sSATA Controller Mode&状态均为&RAID&状态 准备
Z840配置板载SAS RAID后安装非OEM win7 64bit系统加载SAS驱动过程 方法/步骤 安装系统之前需要准备好一个U盘,到惠普官网下载Intel 快速储存技术实用程序sp69762.exe和LSI SAS2308驱动程序sp69177.exe,下载后将sp69762.exe及sp69177.exe解压,
在百度答题时,关于CAD的ET扩展工具加载问题上遇到很多不会加载的人,都以为是下载ET安装,其实不然,在安装CAD时只不过大家没有
一些IOS, cub,bwt,cdi....的文件,需要通过虚拟光驱进行加载,才能读取文件里面的文件,怎样通过虚拟光驱进行加载!! 工具/原料 DAEMON Tools 方法/步骤 下载并安装好DAEMON Tools,安装过程,只要选择好安装目录,下一步下一步就可以了, 安装结束,必须重启电脑, 一些涉及修改注册表,
cad当中的图层,对于初学者很难理解,其实就是一层层图叠加出来的,所以称之为图层.初学者不用纠结这个图层,慢慢学习多了,就能领会其含义. 工具/原料 2010版autocad 方法/步骤 首先,先找到图层工具栏,如图所示:箭头所指的工具为,新建图层进入窗口.那么我们就从这里开始,图层有什么好处呢,用了之后你就会喜欢用它
autoCAD针对公制和英制,提供了两个强大的线型库文件,包含大量符合ISO,ANSI标准以及各国标准的线型,用户可以加载使用,对于没有的线型,还可以创建,下面小编就向大家分享怎样加载和创建线型. 工具/原料 autoCAD 打开线型管理器 &线型管理器&打开的方法.&默认&选项卡&&特性&面板&&线型&&&其他&命令
大家都在看
有关于Javlibrary站,具体就不介绍了.本身这个网站是打不开的!今天主要说的是教大家国内打开Javlibrary的方法 工具
腹部湿湿的到底是在排湿气还是在出汗啊?当然不排除两者都有,在艾灸出汗的这一说法,很多资料没有细致的说法,据我临床经验,很多人开始艾
产后乳腺不通,奶结硬块,腋窝下有肿块,不知道该怎麽办的快来看 方法/步骤 增加喂奶.挤乳次数:宝宝直接吸吮效果最佳,以手挤乳次之
值得培养的五星将: 五星骑兵:张辽,张飞,吕布,马超,董卓,夏侯渊,关羽,荀彧,张角,马云禄, 五星步兵:赵云,刘备,贾诩,司马懿,关银屏,诸葛亮,甘宁,黄月英 五星弓兵:吕蒙,周瑜,孙尚香,和太后,甄姬,貂蝉 值得培养的四星将: 四星骑兵:张绣,徐庶,曹仁,徐晃,管亥,颜良,田丰,曹操,张辽,夏侯淳,马超 四星步兵:
本经验带大家讨论如何在电脑上修改你的QQ密码 工具/原料 电脑一台,需要联网 方法/步骤 打开并登陆你的QQ 进入QQ界面后,点击下方的设置图标(如下图所示) 点击&安全设置& 点击&修改密码& 输入你的旧密码和新密码,输入验证码.点击&确定& 现在你的QQ密码就修改成功了
数据是金的时代,文件误删了是件很苦恼的事情:倘若还在回收桶还好说,但若不在的话,没辙了,去弄注册表吧!!但是最近才发现被隐藏了很久
打印机硒鼓没粉了我如何给它加粉?许多朋友使用打印机遇到硒鼓没粉时在荣风华文具商城问我.其实硒鼓加粉没有那么困难,一学就会! 工具/原料 硒鼓 芯片 碳粉 硒鼓加粉的操作步骤: 找到硒鼓上标有废粉口的盖子(如图): 打开废粉盖倒出里面的废粉盖好: 找到硒鼓上标有加粉口的盖子(如图): 打开盖子倒出里面的余粉,加上新碳粉(
高贵典雅的服饰.外形拉风的豪车.紧跟潮流的科技,成功人士当然要具备应有的装备.数年前一部砖头般的大哥大可以让人羡慕妒忌恨,而到了今
韩国料理菜单: 泡菜 寿司 辣炒年糕 泡菜汤 大酱汤 烤肉 韩国冷面 参鸡汤 烤沙参 还有很多韩国美食 以上的几种都是比较普遍的
美丽是睡出来的 工具/原料 黑夜 眼罩 方法/步骤 1.每天11点前,准时上床睡觉.尽量不要熬夜.好皮肤是睡出来的. 2.睡觉的时AutoCAD超级填充怎么用,CAD超级填充步骤_百度知道
AutoCAD超级填充怎么用,CAD超级填充步骤
我有更好的答案
命令:接受该 BLOCK 的位置吗;0&:正在选择用于边界检测的可见对象;1&;0,除了比例需要自己输入,其他只要用鼠标点点就行命令: superhatchAutoCAD Express Tools Copyright ?1999 Autodesk, Inc.1指定旋转角度 &0;PX/PY/使用 X 比例因子&:指定矩形的线宽 &lt.1输入 Y 比例因子或 &lt..:在 block 周围选择一个窗口来定义列和行的距离.H1 指定插入点或 [比例(S)/X/Y/Z/旋转(R)/预览比例(PS)/:指定矩形的圆角半径 &0.0000&: ,做成块;:指定矩形的厚度 &0.0000&:当前矩形模式: 宽度=0.8207指定矩形的圆角半径 &0.0000&在使用超级填充前首先要确认你的ACAD已经安装了快捷工具1、画好填充内容.0000&gt,并根据实际情况选择填充参数以下是我的命令行提示:指定矩形的线宽 &lt.正在初始化;:指定矩形的厚度 &0.0000&;PZ/预览旋转(PR)]:输入 X 比例因子,指定对角点,或者 [角点(C)/XYZ] &lt..: ? [是(Y)/否(N)] &是&gt。当前矩形模式: 宽度=0.8207指定 block 的第一个角点 [范围(E)] &紫色矩形&.8207&gt,本例的块名是“h1”2、用superhatch
为您推荐:
其他类似问题
autocad的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。CAD二维图形不共面该怎么解决?
互联网 & 04-18 15:07:22 & 作者:佚名 &
CAD二维图形不共面该怎么解决?cad绘制二维图纸,按理说应该是在同一个平面的,但是,问题是cad经常会出现绘制的二维图形不共面问题,该怎么办呢?下面我们分享两种解决办法
画图一直用AutoCAD2007没有升级,也没安装天正之类的插件,在使用时,由于坐标定义,或者导入图块或引入别人的图形等原因,经常会出现绘制的二维图形不共面问题,对于填充及后期建模都有影响。在这里给大家介绍用AutoCAD的移动工具和扩展工具使二维线共面的两种方法。
软件名称:超强CAD图形转换工具(Dwg Express) 6.0 汉化特别版软件大小:2.66MB更新时间:
1、打开CAD,本例中平面图形在顶视图看没什么问题,但进入到立面中就发现图形不共面。
1、利用Express扩展工具将物体放置到同一平面。首先进入顶视图,选择Express扩展工具,选择Modify&&Flatten Objects展平物体
2、&选择物体,确定(确定两次,第二次是确认是否去除隐藏线),完成。在前视图可见图形已经共面
1、使用移动工具实现共面。回到顶视图,首先使用移动工具,选择物体&&确认&&输入0,0,0(从原点出发)&&确认&&再输入0,0,1e99(向上移动到正无穷)&&确认
2、再次使用移动工具,选择物体&&确认&&输入0,0,0(从原点出发)&&确认&&再输入0,0,-1e99(向下移动到正无穷)&&确认
3、再次进入立面视图,可以发现,绘制的二维图形被放置到一个平面上
注意事项:
1、如使用方法二,请安装Express扩展工具,在AutoCAD2007安装时会提示。
2、这两种方法对于三维物体也有效,如图块请先炸开。
3、如果场景中有图块,请炸开后执行。
相关推荐:
大家感兴趣的内容
12345678910
最近更新的内容中国最权威的教材图书网站 
图书分类 -
客服电话:010-
图书查询索引
书名 ISBN 作者 丛书名 出版社 出版社编号 发行单位
AutoCAD 2011建筑制图基础 - 中国高校教材图书网
相关类别图书
最新可供书目
AutoCAD 2011建筑制图基础
装订:平装
开本:16开
折扣价:¥55.10
折扣:0.95
节省了2.9元
发行编号:
每包册数:
出版日期:
内容简介:
本书介绍AutoCAD 2011的基本操作、系统设置、图框样板文件设置、各种画图和编辑命令的使用方法、图学基础理论、建筑工程图的制图标准、图层的设置和操作、视图投影的原理及绘制方法、文字和表格的输入方法、块图形的制作和使用方法、专业的建筑尺寸标注方法、基本的出图方法、Express工具的应用等内容。另外,附书光盘中还提供了AutoLISP/VBA编程入门的电子书。
本书适合机械等相关行业的所有设计和制图人员学习使用,也适合作为建筑本科或相关专业的计算机辅助设计教材。
作者简介:
章节目录:
AutoCAD初步
计算机辅助制图概论 1
从徒手画开始 2
徒手画和计算机画图间的
徒手画的基本技巧 4
用CAD来画图 6
手工绘图器具与计算机绘图功能的
制图板与丁字尺的操作 7
橡皮擦与擦线板
(或称“消字板”)的使用 8
圆规或各种圈圈板的使用 9
三角板与量角器的使用 9
CAD/CAM/CAE 概论 11
运行 AutoCAD 2011 的软件配备 16
运行AutoCAD 2011的硬件配备 17
AutoCAD 2011的界面和基本
认识AutoCAD 2011的主操作
窗口控制 24
菜单和工具栏控制 25
命令提示区 27
键盘按键定义 30
键盘按键定义说明 31
按钮(鼠标或数字化仪)
自动命令完成功能和最近
输入功能 39
AutoCAD加载文件的方式 40
传统的OPEN命令 40
AutoCAD的输入方式和
“局部加载”选项 42
AutoCAD 存盘和输出的格式 43
存盘的方式和格式 43
文件输出的方式和格式 46
AutoCAD的命令提示操作 47
AutoCAD的坐标输入方式 48
绝对坐标 49
相对坐标 51
直接指向坐标点 52
X/Y/Z 点的过滤器 52
AutoCAD中的选择方式 53
标准的选择功能 53
提供快速选择的 QSELECT
AutoCAD的图面缩放和平移操作 58
透明性命令的概念 58
ZOOM(图面放大缩小命令) 59
PAN(画面平移命令) 60
(操控轮命令) 61
平滑视图转换
(VTENABLE变数) 61
-VIEW命令的应用 61
整个基本操作流程的陈述 62
图形文件的检查、修复和清理
图形文件的核查
(AUDIT 命令) 62
图形文件修复
(RECOVER命令) 63
图形修复管理器 63
图形文件清理
(PURGE 命令) 64
AutoCAD的模型空间与图纸空间 65
Windows下的基本环境设置 65
显示完整路径与显示
扩展名的设置 65
调整屏幕分辨率 66
加入TrueType字体文件 67
重要实用的系统环境设置 68
十字光标的长短设置 68
调整绘图区的背景颜色 68
自动备份和存盘文件类型
打印设备方面的系统环境
设置支持文件的搜索路径 71
变更圆与圆弧的显示
设置自用的右键定义 72
变更捕捉标记的大小和
颜色以及捕捉靶框的大小 73
变更拾取框的大小与夹点
的大小与颜色 73
加密图形文件 74
快速创建新图面 75
再次的提醒 76
图学和AutoCAD的绘图、编辑工具
基本几何与AutoCAD基本
绘图、编辑工具 79
点与点样式(POINT & DDPTYPE)
DDPTYPE命令 80
POINT命令 81
三种画线的命令 82
LINE(线)命令 82
PLINE(多段线)、EXPLODE
(分解)和PEDIT
(编辑多段线)命令 84
SPLINE(画样条曲线)命令 88
需要先认识的编辑命令 90
ERASE命令 90
U/REDO(放弃/重做命令) 92
UNDO(放弃控制命令) 92
COPY(复制)和MOVE(移动)
TRIM 命令 96
EXTEND命令 98
BREAK(打断)命令 100
MIRROR命令 102
FILLET和CHAMFER
AutoCAD的夹点和对象捕捉
操作法 108
夹点操作 108
一定要熟练的对象捕捉
画已知直线的垂线
(几何主题) 113
圆(CIRCLE)命令 115
命令陈述 115
从圆外一点画圆的切线
(几何主题1) 116
画两圆的内公切线
(几何主题2) 117
画三角形的内切圆
(几何主题3) 118
弧(ARC)命令 120
命令陈述 120
二等分一线段或圆弧
(几何主题1) 122
二等分一角(几何主题2) 122
过线外一点画切于直线的
圆弧(几何主题3) 123
画两线间的切弧
(几何主题4) 124
画两已知圆间的内切弧
(几何主题5) 125
画一已知圆和一线间的
内切弧(几何主题6) 127
求出一已知圆弧的圆心
(几何主题7) 128
椭圆(ELLIPSE)命令 129
命令陈述 129
内切于菱形的椭圆
(几何主题1) 132
多边形(PLOYGON)命令 133
命令陈述 133
已知一边长画正三角形
(几何主题1) 135
已知三边长画三角形
(几何主题2) 136
求多边形的圆心
(几何主题3) 137
通过已知外接圆来画出一
正多边形(几何主题4) 137
偏移复制(OFFSET)命令 138
命令陈述 138
画已知直线的平行线
(几何主题1) 140
正确的计算机绘图操作应用 141
任意等分几何主题 142
MEASURE(定距等分)和
DIVIDE(定数等分)命令 142
ARRAY(阵列)命令 144
任意等分一线段 146
任意等分一圆弧或曲线 146
任意等分一角 147
曲线几何主题 148
画双曲线 148
已知双曲线的两焦点和
顶点画双曲线 149
过一已知点画等轴双曲线 149
画抛物线 150
HELIX(画阿基米德螺线)
画摆线 154
画渐开线 157
画螺旋线 159
其他有用的基本编辑命令 161
SCALE(缩放)命令 161
ROTATE(旋转)命令 163
STRETCH(拉伸)命令 164
LENGTHEN(拉长)命令 165
JOIN(合并)命令 167
PROPERTIES(特性)命令 168
BHATCH(图案填充)命令 169
MLINE(多线)命令 177
MLSTYLE(多线样式)命令 178
MLINE(多线)命令 178
MLEDIT(多线编辑)命令 179
数据查询命令 182
DIST(距离量测)命令 182
AREA(面积计算)命令 183
TIME(时间查询)命令 185
AutoCAD的图层 191
图层简说 192
LAYER(图层设置)命令 192
图层的操作应用实务 196
制作初级的图框样板文件 198
制作A3图框样板文件
RECTANG(画矩形)
图层分配和直接分配的误区 202
COLOR、LINETYPE和LWEIGHT
COLOR(颜色)命令 203
LINETYPE(线型)命令 205
LWEIGHT(线宽)命令 206
LAYTRANS(图层转换器)命令 207
点线面的正投影与直线和平面
的关系 209
本章电子书说明 210
投影视图 211
本章电子书说明 212
AutoCAD的写字、贴图和
画表格功能 213
AutoCAD对文字功能的设计
和写字有关的AutoCAD命令 215
STYLE(设置文字字体)
DTEXT(单行文字)命令 216
MTEXT(多行文字)命令 218
JUSTIFYTEXT(文字对齐)
FIND(寻找及替换)命令 221
SCALETEXT(缩放文字)
SPACETRANS(转换长度值)
FIELD(插入字段命令) 223
和贴图相关的AutoCAD命令 225
IMAGE(图像管理,内含
IMAGEATTACH命令的
功能)命令 225
IMAGEADJUST(图像调整)
IMAGECLIP(图像剪裁)
IMAGEFRAME(开关图像框)
IAMGEQUALITY(图像质量)
TRANSPARENCY
(设置图像透明度)命令 229
创建表格 230
TABLESTYLE(表格设置)
TABLE(创建表格)命令 231
输入Excel表格 232
以表格来加载图形文件的
运行表格数据的计算 233
将表格转成Excel 电子表格
其他的表格编辑技巧 235
图框样板文件内容的再增添 238
本章问题集 239
基本尺寸标注 241
尺寸标注定义 242
基本尺寸标注概论 243
尺寸线和尺寸延伸线 243
引线和注释 247
DIMSTYLE(尺寸标注样式)命令 248
图框样板文件内容的再增添 252
第一个尺寸标注命令:QDIM
(快速尺寸标注) 252
AutoCAD的长度标注操作 254
DIMLINEAR(线性标注)
DIMALIGNED(对齐线性标注)
DIMORDINATE
(坐标尺寸标注)命令 258
DIMBASELINE
(基线标注)命令 259
DIMSPACE(标注间距)
DIMCONTINUE(连续标注)
和线性标注有关的其他
标注法 263
AutoCAD的圆弧标注操作 265
角度标注 265
DIMRADIUS(半径标注)
和DIMDIAMETER
(直径标注)命令 266
DIMJOGGED(圆弧折弯标注)
DIMBREAK(标注打断)
DIMJOGLINE(折弯线性)
DIMARC (弧长标注)
和圆弧标注有关的其他
标注法 272
AutoCAD的圆心和引线标注 273
DIMCENTER(圆弧中心记号
标注)命令 274
AutoCAD的标引线功能 274
AutoCAD的尺寸编辑工具 280
DIMEDIT(尺寸标注编辑)
DIMTEDIT(尺寸文字编辑)
DIMREASSOCIATE
(重新关联标注)命令 284
DIMSTYLE - Apply
(更新尺寸标注)命令 284
综合几何绘图实务 287
范例一 288
范例二 306
范例三 310
范例四 313
范例五 317
范例六 319
块﹑外部参照和AutoCAD
设计中心 331
BLOCK和WBLOCK的异同 332
相关块的命令详述 333
BASE(设置块插入点)
BLOCK(创建块)命令 333
WBLOCK(创建全局块)
INSERT(插入块)命令 335
实作范例 336
第一阶段(制作块图形) 337
第二阶段(修改块图形) 338
(制作全局块图形) 339
范例分析 340
查询规范的制作 341
动态块 342
外部参照 345
XREF(外部参照管理程序)
XATTACH(附着外部参照)
XOPEN(打开外部参照)
XCLIP(剪裁外部参照图形)
XCLIPFRAME(设置剪裁边
界框是否可见的变量)命令 353
XBIND(绑定图形文件)
(编辑外部参照图形)命令 354
REFSET(增减外部参照
组件)命令 355
REFCLOSE(关闭参照编辑)
AutoCAD 设计中心 357
ADCENTER(激活“设计
中心”)命令 358
打开和插入资源到
图面上的操作 358
其他功能的操作 359
基本出图法 363
打印概论 364
AutoCAD的打印概念 364
Windows里的绘图仪或打印机
STYLESMANAGER
(设置出图样式)命令 367
PLOTTERMANAGER
(绘图仪管理)命令 369
正式打印——PLOT命令 374
其他格式的打印 378
Microsoft Office Document
Image Writer 378
Adobe PDF 379
DWF6 ePlot.pc3 380
PublishToWeb JPG.pc3和
PublishToWeb PNG.pc3 382
AutoCAD的批量打印 382
AutoCAD 2011版的Express
功能和命令拾漏 385
Express程序集概说 386
将属性分解成文字
(Explode Attribute to Text) 388
将形转成块
(Convert Shape to Block) 389
输出属性信息(Export Attribute
Information) 389
输入属性信息(Import Attribute
Information) 390
以一块取代另一块
(Replace Block With Another
Block) 390
文字类 391
分解文字(Explode Text) 392
将Text转换成Mtext
(Convert Text to Mtext) 393
(Arc-Aligned Text) 393
圈字功能(Enclose Text with
Object) 394
自动加注行号功能(Automatic
Text Numbering) 395
改变字的大小写功能
(Change Text Case) 395
配置工具类 396
尺寸标注类 396
选取工具类 396
修改类 397
多重图素拉伸(Multiple Object
Stretch) 397
移动、复制、旋转和大小
缩放四合一
(Move/Copy/Rotate) 398
对外部参照块、图像图片和
块的剪取(Extend Clip) 399
清除重叠图形(Delete duplicate
objects) 399
3D图形转2D
(Flatten objects) 400
画图类 401
画断裂线功能
(Break-line Symbol) 401
超级图案填充
(Super Hatch)★★★ 402
文件工具类 404
Web工具类 405
工具类 405
系统变量编辑器
(System Variable Editor) 406
(Make Linetype) 407
创建型文件(Make Shape) 408
平面的延伸显示功能
(Extended Plan) 409
网站链接类 409
AutoCAD的命令拾漏 409
QUICKCALC(AutoCAD
的计算器)命令 410
REVCLOUD(画修订用的
云线)命令 414
COPYLINK(将图面复制
到剪贴板)命令 415
COPYCLIP(将指定图面
复制到剪贴板)命令 416
CUTCLIP(剪切)命令 417
PASTECLIP(粘贴)命令 417
PASTESPEC(选择性粘贴)
PASTEBLOCK(粘贴块)
PASTEORIG(粘贴到原始
坐标)命令 421
INSERTOBJ(插入OLE
对象)命令 421
OLELINKS(OLE链接)
OLESCALE(设置OLE
属性)命令 425
COPYHIST(复制命令过程)
HYPERLINK(超链接)
HYPERLINKOPTIONS
(超链接选项)命令 428
BLIPMODE(光点开关)
FILL(填充模式开关)
QTEXT(快速文字显示
?开关)命令 429
RENAME(重命名)
SKETCH(徒手画)
XPLODE(分解复合图形)
AutoLISP/VBA入门篇
AutoLISP/VBA电子书使用
注意事项 436
电子书、范例和解答所在的
AutoCAD各版本差异
版权和服务方面的注意
如何使用本书范例光盘和
精彩片段:
书  评:
其  它:
<table class="tblBL" cellpadding="0" cellspacing="0"
网上购书指南
&中国高校教材图书网
&&&京公网安备号
&&&技术支持:
总访问量:/ node-huodada
项目语言:NODEJS
权限:read-only(如需更高权限请先加入项目)
node-huodada/
Index: fresh/LICENSE
===================================================================
--- fresh/LICENSE (revision 0)
+++ fresh/LICENSE (revision 2)
@@ -0,0 +1,22 @@
+(The MIT License)
+Copyright (c) 2012 TJ Holowaychuk &tj@vision-media.ca&
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+&#39;Software&#39;), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED &#39;AS IS&#39;, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: fresh/index.js
===================================================================
--- fresh/index.js (revision 0)
+++ fresh/index.js (revision 2)
@@ -0,0 +1,57 @@
+ * Expose `fresh()`.
+module.exports =
+ * Check freshness of `req` and `res` headers.
+ * When the cache is &fresh& __true__ is returned,
+ * otherwise __false__ is returned to indicate that
+ * the cache is now stale.
+ * @param {Object} req
+ * @param {Object} res
+ * @return {Boolean}
+ * @api public
+function fresh(req, res) {
// defaults
var etagMatches =
var notModified =
var modifiedSince = req[&#39;if-modified-since&#39;];
var noneMatch = req[&#39;if-none-match&#39;];
var lastModified = res[&#39;last-modified&#39;];
var etag = res[&#39;etag&#39;];
var cc = req[&#39;cache-control&#39;];
// unconditional request
if (!modifiedSince && !noneMatch)
// check for no-cache cache request directive
if (cc && cc.indexOf(&#39;no-cache&#39;) !== -1)
// parse if-none-match
if (noneMatch) noneMatch = noneMatch.split(/ *, */);
// if-none-match
if (noneMatch) {
etagMatches = noneMatch.some(function (match) {
return match === &#39;*&#39; || match === etag || match === &#39;W/&#39; +
// if-modified-since
if (modifiedSince) {
modifiedSince = new Date(modifiedSince);
lastModified = new Date(lastModified);
notModified = lastModified &= modifiedS
return !! (etagMatches && notModified);
Index: fresh/package.json
===================================================================
--- fresh/package.json (revision 0)
+++ fresh/package.json (revision 2)
@@ -0,0 +1,87 @@
&name&: &fresh&,
&description&: &HTTP response freshness testing&,
&version&: &0.3.0&,
&author&: {
&name&: &TJ Holowaychuk&,
&email&: &tj@vision-media.ca&,
&url&: &http://tjholowaychuk.com&
&contributors&: [
&name&: &Douglas Christopher Wilson&,
&email&: &&
&name&: &Jonathan Ong&,
&email&: &&,
&url&: &http://jongleberry.com&
&license&: &MIT&,
&keywords&: [
&conditional&,
&repository&: {
&type&: &git&,
&url&: &git+https://github.com/jshttp/fresh.git&
&devDependencies&: {
&istanbul&: &0.3.9&,
&mocha&: &1.21.5&
&files&: [
&HISTORY.md&,
&LICENSE&,
&index.js&
&engines&: {
&node&: &&= 0.6&
&scripts&: {
&test&: &mocha --reporter spec --bail --check-leaks test/&,
&test-cov&: &istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/&,
&test-travis&: &istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/&
&gitHead&: &8ca08cd6a955dd88ab659b778634&,
&url&: &https://github.com/jshttp/fresh/issues&
&homepage&: &https://github.com/jshttp/fresh&,
&_id&: &fresh@0.3.0&,
&_shasum&: &651f838ede161d8358caa199f83d4f&,
&_from&: &fresh@0.3.0&,
&_npmVersion&: &1.4.28&,
&_npmUser&: {
&name&: &dougwilson&,
&email&: &&
&maintainers&: [
&name&: &tjholowaychuk&,
&email&: &tj@vision-media.ca&
&name&: &jonathanong&,
&email&: &&
&name&: &dougwilson&,
&email&: &&
&name&: &jongleberry&,
&email&: &&
&shasum&: &651f838ede161d8358caa199f83d4f&,
&tarball&: &http://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz&
&directories&: {},
&_resolved&: &https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz&,
&readme&: &ERROR: No README data found!&
Index: fresh/README.md
===================================================================
--- fresh/README.md (revision 0)
+++ fresh/README.md (revision 2)
@@ -0,0 +1,58 @@
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+HTTP response freshness testing
+## Installation
+$ npm install fresh
+var fresh = require(&#39;fresh&#39;)
+### fresh(req, res)
+ Check freshness of `req` and `res` headers.
+ When the cache is &fresh& __true__ is returned,
+ otherwise __false__ is returned to indicate that
+ the cache is now stale.
+## Example
+var req = { &#39;if-none-match&#39;: &#39;tobi&#39; };
+var res = { &#39;etag&#39;: &#39;luna&#39; };
+fresh(req, res);
+// =& false
+var req = { &#39;if-none-match&#39;: &#39;tobi&#39; };
+var res = { &#39;etag&#39;: &#39;tobi&#39; };
+fresh(req, res);
+// =& true
+## License
+[MIT](LICENSE)
+[npm-image]: https://img.shields.io/npm/v/fresh.svg
+[npm-url]: https://npmjs.org/package/fresh
+[node-version-image]: https://img.shields.io/node/v/fresh.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/fresh/master.svg
+[travis-url]: https://travis-ci.org/jshttp/fresh
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/fresh.svg
+[downloads-url]: https://npmjs.org/package/fresh
Index: fresh/HISTORY.md
===================================================================
--- fresh/HISTORY.md (revision 0)
+++ fresh/HISTORY.md (revision 2)
@@ -0,0 +1,38 @@
+==================
* Add weak `ETag` matching support
+==================
* Support Node.js 0.6
+==================
* Move repository to jshttp
+==================
* Revert &Fix for blank page on Safari reload&
+==================
* Fix for blank page on Safari reload
+==================
* Return stale for `Cache-Control: no-cache`
+==================
* Add `If-None-Match: *` support
+==================
* Initial release
Index: cookie-signature/History.md
===================================================================
--- cookie-signature/History.md (revision 0)
+++ cookie-signature/History.md (revision 2)
@@ -0,0 +1,38 @@
+==================
+* use `npm test` instead of `make test` to run tests
+* clearer assertion messages when checking input
+==================
+* add license to package.json
+==================
+ * corrected avoidance of timing attacks (thanks @tenbits!)
+==================
+ * [incorrect] fix for timing attacks
+==================
+ * fix missing repository warning
+ * fix typo in test
+==================
* Revert &Changed underlying HMAC algo. to sha512.&
* Revert &Fix for timing attacks on MAC verification.&
+==================
* Initial release
Index: cookie-signature/index.js
===================================================================
--- cookie-signature/index.js (revision 0)
+++ cookie-signature/index.js (revision 2)
@@ -0,0 +1,51 @@
+ * Module dependencies.
+var crypto = require(&#39;crypto&#39;);
+ * Sign the given `val` with `secret`.
+ * @param {String} val
+ * @param {String} secret
+ * @return {String}
+ * @api private
+exports.sign = function(val, secret){
if (&#39;string&#39; != typeof val) throw new TypeError(&Cookie value must be provided as a string.&);
if (&#39;string&#39; != typeof secret) throw new TypeError(&Secret string must be provided.&);
return val + &#39;.&#39; + crypto
.createHmac(&#39;sha256&#39;, secret)
.update(val)
.digest(&#39;base64&#39;)
.replace(/\=+$/, &#39;&#39;);
+ * Unsign and decode the given `val` with `secret`,
+ * returning `false` if the signature is invalid.
+ * @param {String} val
+ * @param {String} secret
+ * @return {String|Boolean}
+ * @api private
+exports.unsign = function(val, secret){
if (&#39;string&#39; != typeof val) throw new TypeError(&Signed cookie string must be provided.&);
if (&#39;string&#39; != typeof secret) throw new TypeError(&Secret string must be provided.&);
var str = val.slice(0, val.lastIndexOf(&#39;.&#39;))
, mac = exports.sign(str, secret);
return sha1(mac) == sha1(val) ? str :
+ * Private
+function sha1(str){
return crypto.createHash(&#39;sha1&#39;).update(str).digest(&#39;hex&#39;);
Index: cookie-signature/package.json
===================================================================
--- cookie-signature/package.json (revision 0)
+++ cookie-signature/package.json (revision 2)
@@ -0,0 +1,59 @@
&name&: &cookie-signature&,
&version&: &1.0.6&,
&description&: &Sign and unsign cookies&,
&keywords&: [
&author&: {
&name&: &TJ Holowaychuk&,
&email&: &&
&license&: &MIT&,
&repository&: {
&type&: &git&,
&url&: &git+https://github.com/visionmedia/node-cookie-signature.git&
&dependencies&: {},
&devDependencies&: {
&mocha&: &*&,
&should&: &*&
&scripts&: {
&test&: &mocha --require should --reporter spec&
&main&: &index&,
&gitHead&: &391b56cf44d88ce3fc53208cfb976d2a&,
&url&: &https://github.com/visionmedia/node-cookie-signature/issues&
&homepage&: &https://github.com/visionmedia/node-cookie-signature&,
&_id&: &cookie-signature@1.0.6&,
&_shasum&: &e303a882b342cc3ee8ca513adab3ae2c&,
&_from&: &cookie-signature@1.0.6&,
&_npmVersion&: &2.3.0&,
&_nodeVersion&: &0.10.36&,
&_npmUser&: {
&name&: &natevw&,
&email&: &&
&maintainers&: [
&name&: &tjholowaychuk&,
&email&: &tj@vision-media.ca&
&name&: &natevw&,
&email&: &&
&shasum&: &e303a882b342cc3ee8ca513adab3ae2c&,
&tarball&: &http://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz&
&directories&: {},
&_resolved&: &https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz&,
&readme&: &ERROR: No README data found!&
Index: cookie-signature/.npmignore
===================================================================
--- cookie-signature/.npmignore (revision 0)
+++ cookie-signature/.npmignore (revision 2)
@@ -0,0 +1,4 @@
Index: cookie-signature/Readme.md
===================================================================
--- cookie-signature/Readme.md (revision 0)
+++ cookie-signature/Readme.md (revision 2)
@@ -0,0 +1,42 @@
+# cookie-signature
Sign and unsign cookies.
+## Example
+var cookie = require(&#39;cookie-signature&#39;);
+var val = cookie.sign(&#39;hello&#39;, &#39;tobiiscool&#39;);
+val.should.equal(&#39;hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI&#39;);
+var val = cookie.sign(&#39;hello&#39;, &#39;tobiiscool&#39;);
+cookie.unsign(val, &#39;tobiiscool&#39;).should.equal(&#39;hello&#39;);
+cookie.unsign(val, &#39;luna&#39;).should.be.
+## License
+(The MIT License)
+Copyright (c) 2012 LearnBoost &&
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+&#39;Software&#39;), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED &#39;AS IS&#39;, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
Index: serve-static/HISTORY.md
===================================================================
--- serve-static/HISTORY.md (revision 0)
+++ serve-static/HISTORY.md (revision 2)
@@ -0,0 +1,284 @@
+===================
* Add `fallthrough` option
- Allows declaring this middleware is the final destination
- Provides better integration with Express patterns
* Fix reading options from options prototype
* Improve the default redirect response headers
* deps: escape-html@1.0.2
* deps: send@0.13.0
- Allow Node.js HTTP server to set `Date` response header
- Fix incorrectly removing `Content-Location` on 304 response
- Improve the default redirect response headers
- Send appropriate headers on default error response
- Use `http-errors` for standard emitted errors
- Use `statuses` instead of `http` module for status messages
- deps: escape-html@1.0.2
- deps: etag@~1.7.0
- deps: fresh@0.3.0
- deps: on-finished@~2.3.0
- perf: enable strict mode
- perf: remove unnecessary array allocations
* perf: enable strict mode
* perf: remove argument reassignment
+==================
* deps: send@0.12.3
- deps: debug@~2.2.0
- deps: depd@~1.0.1
- deps: etag@~1.6.0
- deps: ms@0.7.1
- deps: on-finished@~2.2.1
+==================
* deps: send@0.12.2
- Throw errors early for invalid `extensions` or `index` options
- deps: debug@~2.1.3
+==================
* deps: send@0.12.1
- Fix regression sending zero-length files
+==================
* deps: send@0.12.0
- Always read the stat size from the file
- Fix mutating passed-in `options`
- deps: mime@1.3.4
+==================
* Fix redirect loop in Node.js 0.11.14
* deps: send@0.11.1
- Fix root path disclosure
+==================
* deps: send@0.11.0
- deps: debug@~2.1.1
- deps: etag@~1.5.1
- deps: ms@0.7.0
- deps: on-finished@~2.2.0
+==================
* Fix potential open redirect when mounted at root
+==================
* deps: send@0.10.1
- deps: on-finished@~2.1.1
+==================
* deps: send@0.10.0
- deps: debug@~2.1.0
- deps: depd@~1.0.0
- deps: etag@~1.5.0
+==================
* Fix potential open redirect when mounted at root
- Back-ported from v1.7.2
+==================
* Fix redirect loop when index file serving disabled
+==================
* deps: send@0.9.3
- deps: etag@~1.4.0
+==================
* deps: send@0.9.2
- deps: depd@0.4.5
- deps: etag@~1.3.1
- deps: range-parser@~1.0.2
+==================
* deps: send@0.9.1
- deps: fresh@0.2.4
+==================
* deps: send@0.9.0
- Add `lastModified` option
- Use `etag` to generate `ETag` header
- deps: debug@~2.0.0
+==================
* deps: send@0.8.5
- Fix a path traversal issue when using `root`
- Fix malicious path detection for empty string path
+==================
* deps: send@0.8.3
+==================
* deps: send@0.8.2
- Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
+==================
* Fix parsing of weird `req.originalUrl` values
* deps: parseurl@~1.3.0
* deps: utils-merge@1.0.0
+==================
* deps: send@0.8.1
- Add `extensions` option
+==================
* deps: send@0.7.4
- Fix serving index files without root dir
+==================
* deps: send@0.7.3
- Fix incorrect 403 on Windows and Node.js 0.11
+==================
* deps: send@0.7.2
- deps: depd@0.4.4
+==================
* deps: send@0.7.1
- deps: depd@0.4.3
+==================
* deps: parseurl@~1.2.0
- Cache URLs based on original value
- Remove no-longer-needed URL mis-parse work-around
- Simplify the &fast-path& `RegExp`
* deps: send@0.7.0
- Add `dotfiles` option
- deps: debug@1.0.4
- deps: depd@0.4.2
+==================
* deps: send@0.6.0
- Cap `maxAge` value to 1 year
- deps: debug@1.0.3
+==================
* deps: parseurl@~1.1.3
- faster parsing of href-only URLs
+==================
* Add `setHeaders` option
* Include HTML link in redirect response
* deps: send@0.5.0
- Accept string for `maxAge` (converted by `ms`)
+==================
* deps: send@0.4.3
- Do not throw un-catchable error on file open race condition
- Use `escape-html` for HTML escaping
- deps: debug@1.0.2
- deps: finished@1.2.2
- deps: fresh@0.2.2
+==================
* deps: send@0.4.2
- fix &event emitter leak& warnings
- deps: debug@1.0.1
- deps: finished@1.2.1
+==================
* use `escape-html` for escaping
* deps: send@0.4.1
- Send `max-age` in `Cache-Control` in correct format
+==================
* deps: send@0.4.0
- Calculate ETag with md5 for reduced collisions
- Fix wrong behavior when index file matches directory
- Ignore stream errors after request ends
- Skip directories in index file search
- deps: debug@0.8.1
+==================
* Accept options directly to `send` module
* deps: send@0.3.0
+==================
* Resolve relative paths at middleware setup
* Use parseurl to parse the URL from request
+==================
* Do not rely on connect-like environments
+==================
* deps: send@0.2.0
+==================
* Add mime export for back-compat
+==================
* Genesis from `connect`
Index: serve-static/LICENSE
===================================================================
--- serve-static/LICENSE (revision 0)
+++ serve-static/LICENSE (revision 2)
@@ -0,0 +1,25 @@
+(The MIT License)
+Copyright (c) 2010 Sencha Inc.
+Copyright (c) 2011 LearnBoost
+Copyright (c) 2011 TJ Holowaychuk
+Copyright (c)
Douglas Christopher Wilson
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+&#39;Software&#39;), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED &#39;AS IS&#39;, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: serve-static/index.js
===================================================================
--- serve-static/index.js (revision 0)
+++ serve-static/index.js (revision 2)
@@ -0,0 +1,187 @@
+ * serve-static
+ * Copyright(c) 2010 Sencha Inc.
+ * Copyright(c) 2011 TJ Holowaychuk
+ * Copyright(c)
Douglas Christopher Wilson
+ * MIT Licensed
+&#39;use strict&#39;
+ * Module dependencies.
+ * @private
+var escapeHtml = require(&#39;escape-html&#39;)
+var parseUrl = require(&#39;parseurl&#39;)
+var resolve = require(&#39;path&#39;).resolve
+var send = require(&#39;send&#39;)
+var url = require(&#39;url&#39;)
+ * Module exports.
+ * @public
+module.exports = serveStatic
+module.exports.mime = send.mime
+ * @param {string} root
+ * @param {object} [options]
+ * @return {function}
+ * @public
+function serveStatic(root, options) {
if (!root) {
throw new TypeError(&#39;root path required&#39;)
if (typeof root !== &#39;string&#39;) {
throw new TypeError(&#39;root path must be a string&#39;)
// copy options object
var opts = Object.create(options || null)
// fall-though
var fallthrough = opts.fallthrough !== false
// default redirect
var redirect = opts.redirect !== false
// headers listener
var setHeaders = opts.setHeaders
if (setHeaders && typeof setHeaders !== &#39;function&#39;) {
throw new TypeError(&#39;option setHeaders must be function&#39;)
// setup options for send
opts.maxage = opts.maxage || opts.maxAge || 0
opts.root = resolve(root)
// construct directory listener
var onDirectory = redirect
? createRedirectDirectoryListener()
: createNotFoundDirectoryListener()
return function serveStatic(req, res, next) {
if (req.method !== &#39;GET&#39; && req.method !== &#39;HEAD&#39;) {
if (fallthrough) {
return next()
// method not allowed
res.statusCode = 405
res.setHeader(&#39;Allow&#39;, &#39;GET, HEAD&#39;)
res.setHeader(&#39;Content-Length&#39;, &#39;0&#39;)
var forwardError = !fallthrough
var originalUrl = parseUrl.original(req)
var path = parseUrl(req).pathname
// make sure redirect occurs at mount
if (path === &#39;/&#39; && originalUrl.pathname.substr(-1) !== &#39;/&#39;) {
path = &#39;&#39;
// create send stream
var stream = send(req, path, opts)
// add directory handler
stream.on(&#39;directory&#39;, onDirectory)
// add headers listener
if (setHeaders) {
stream.on(&#39;headers&#39;, setHeaders)
// add file listener for fallthrough
if (fallthrough) {
stream.on(&#39;file&#39;, function onFile() {
// once file is determined, always forward error
forwardError = true
// forward errors
stream.on(&#39;error&#39;, function error(err) {
if (forwardError || !(err.statusCode & 500)) {
stream.pipe(res)
+ * Collapse all leading slashes into a single slash
+ * @private
+function collapseLeadingSlashes(str) {
for (var i = 0; i & str. i++) {
if (str[i] !== &#39;/&#39;) {
return i & 1
? &#39;/&#39; + str.substr(i)
+ * Create a directory listener that just 404s.
+ * @private
+function createNotFoundDirectoryListener() {
return function notFound() {
this.error(404)
+ * Create a directory listener that performs a redirect.
+ * @private
+function createRedirectDirectoryListener() {
return function redirect() {
if (this.hasTrailingSlash()) {
this.error(404)
// get original URL
var originalUrl = parseUrl.original(this.req)
// append trailing slash
originalUrl.path = null
originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + &#39;/&#39;)
// reformat the URL
var loc = url.format(originalUrl)
var msg = &#39;Redirecting to &a href=&&#39; + escapeHtml(loc) + &#39;&&&#39; + escapeHtml(loc) + &#39;&/a&\n&#39;
var res = this.res
// send redirect response
res.statusCode = 303
res.setHeader(&#39;Content-Type&#39;, &#39;text/ charset=UTF-8&#39;)
res.setHeader(&#39;Content-Length&#39;, Buffer.byteLength(msg))
res.setHeader(&#39;X-Content-Type-Options&#39;, &#39;nosniff&#39;)
res.setHeader(&#39;Location&#39;, loc)
res.end(msg)
Index: serve-static/package.json
===================================================================
--- serve-static/package.json (revision 0)
+++ serve-static/package.json (revision 2)
@@ -0,0 +1,83 @@
&name&: &serve-static&,
&description&: &Serve static files&,
&version&: &1.10.0&,
&author&: {
&name&: &Douglas Christopher Wilson&,
&email&: &&
&license&: &MIT&,
&repository&: {
&type&: &git&,
&url&: &git+https://github.com/expressjs/serve-static.git&
&dependencies&: {
&escape-html&: &1.0.2&,
&parseurl&: &~1.3.0&,
&send&: &0.13.0&
&devDependencies&: {
&istanbul&: &0.3.9&,
&mocha&: &2.2.5&,
&supertest&: &1.0.1&
&files&: [
&LICENSE&,
&HISTORY.md&,
&index.js&
&engines&: {
&node&: &&= 0.8.0&
&scripts&: {
&test&: &mocha --reporter spec --bail --check-leaks test/&,
&test-ci&: &istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/&,
&test-cov&: &istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/&
&gitHead&: &856c5e0f796a018594bfb8c51a4fa&,
&url&: &https://github.com/expressjs/serve-static/issues&
&homepage&: &https://github.com/expressjs/serve-static&,
&_id&: &serve-static@1.10.0&,
&_shasum&: &be632faaa43ed3dff370d7&,
&_from&: &serve-static@&=1.10.0 &1.11.0&,
&_npmVersion&: &1.4.28&,
&_npmUser&: {
&name&: &dougwilson&,
&email&: &&
&maintainers&: [
&name&: &dougwilson&,
&email&: &&
&name&: &jongleberry&,
&email&: &&
&name&: &tjholowaychuk&,
&email&: &tj@vision-media.ca&
&name&: &mscdex&,
&email&: &&
&name&: &fishrock123&,
&email&: &&
&name&: &defunctzombie&,
&email&: &&
&shasum&: &be632faaa43ed3dff370d7&,
&tarball&: &http://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz&
&directories&: {},
&_resolved&: &https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz&,
&readme&: &ERROR: No README data found!&
Index: serve-static/README.md
===================================================================
--- serve-static/README.md (revision 0)
+++ serve-static/README.md (revision 2)
@@ -0,0 +1,235 @@
+# serve-static
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Linux Build][travis-image]][travis-url]
+[![Windows Build][appveyor-image]][appveyor-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+[![Gratipay][gratipay-image]][gratipay-url]
+## Install
+$ npm install serve-static
+var serveStatic = require(&#39;serve-static&#39;)
+### serveStatic(root, options)
+Create a new middleware function to serve files from within a given root
+directory. The file to serve will be determined by combining `req.url`
+with the provided root directory. When a file is not found, instead of
+sending a 404 response, this module will instead call `next()` to move on
+to the next middleware, allowing for stacking and fall-backs.
+#### Options
+##### dotfiles
+ Set how &dotfiles& are treated when encountered. A dotfile is a file
+or directory that begins with a dot (&.&). Note this check is done on
+the path itself without checking if the path actually exists on the
+disk. If `root` is specified, only the dotfiles above the root are
+checked (i.e. the root itself can be within a dotfile when set
+to &deny&).
+The default value is `&#39;ignore&#39;`.
- `&#39;allow&#39;` No special treatment for dotfiles.
- `&#39;deny&#39;` Deny a request for a dotfile and 403/`next()`.
- `&#39;ignore&#39;` Pretend like the dotfile does not exist and 404/`next()`.
+##### etag
+Enable or disable etag generation, defaults to true.
+##### extensions
+Set file extension fallbacks. When set, if a file is not found, the given
+extensions will be added to the file name and search for. The first that
+exists will be served. Example: `[&#39;html&#39;, &#39;htm&#39;]`.
+The default value is `false`.
+##### fallthrough
+Set the middleware to have client errors fall-through as just unhandled
+requests, otherwise forward a client error. The difference is that client
+errors like a bad request or a request to a non-existent file will cause
+this middleware to simply `next()` to your next middleware when this value
+is `true`. When this value is `false`, these errors (even 404s), will invoke
+`next(err)`.
+Typically `true` is desired such that multiple physical directories can be
+mapped to the same web address or for routes to fill in non-existent files.
+The value `false` can be used if this middleware is mounted at a path that
+is designed to be strictly a single file system directory, which allows for
+short-circuiting 404s for less overhead. This middleware will also reply to
+all methods.
+The default value is `true`.
+##### index
+By default this module will send &index.html& files in response to a request
+on a directory. To disable this set `false` or to supply a new index pass a
+string or an array in preferred order.
+##### lastModified
+Enable or disable `Last-Modified` header, defaults to true. Uses the file
+system&#39;s last modified value.
+##### maxAge
+Provide a max-age in milliseconds for http caching, defaults to 0. This
+can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme)
+##### redirect
+Redirect to trailing &/& when the pathname is a dir. Defaults to `true`.
+##### setHeaders
+Function to set custom headers on response. Alterations to the headers need to
+occur synchronously. The function is called as `fn(res, path, stat)`, where
+the arguments are:
- `res` the response object
- `path` the file path that is being sent
- `stat` the stat object of the file that is being sent
+## Examples
+### Serve files with vanilla node.js http server
+var finalhandler = require(&#39;finalhandler&#39;)
+var http = require(&#39;http&#39;)
+var serveStatic = require(&#39;serve-static&#39;)
+// Serve up public/ftp folder
+var serve = serveStatic(&#39;public/ftp&#39;, {&#39;index&#39;: [&#39;index.html&#39;, &#39;index.htm&#39;]})
+// Create server
+var server = http.createServer(function(req, res){
var done = finalhandler(req, res)
serve(req, res, done)
+// Listen
+server.listen(3000)
+### Serve all files as downloads
+var contentDisposition = require(&#39;content-disposition&#39;)
+var finalhandler = require(&#39;finalhandler&#39;)
+var http = require(&#39;http&#39;)
+var serveStatic = require(&#39;serve-static&#39;)
+// Serve up public/ftp folder
+var serve = serveStatic(&#39;public/ftp&#39;, {
&#39;index&#39;: false,
&#39;setHeaders&#39;: setHeaders
+// Set header to force download
+function setHeaders(res, path) {
res.setHeader(&#39;Content-Disposition&#39;, contentDisposition(path))
+// Create server
+var server = http.createServer(function(req, res){
var done = finalhandler(req, res)
serve(req, res, done)
+// Listen
+server.listen(3000)
+### Serving using express
+#### Simple
+This is a simple example of using Express.
+var express = require(&#39;express&#39;)
+var serveStatic = require(&#39;serve-static&#39;)
+var app = express()
+app.use(serveStatic(&#39;public/ftp&#39;, {&#39;index&#39;: [&#39;default.html&#39;, &#39;default.htm&#39;]}))
+app.listen(3000)
+#### Multiple roots
+This example shows a simple way to search through multiple directories.
+Files are look for in `public-optimized/` first, then `public/` second as
+a fallback.
+var express = require(&#39;express&#39;)
+var serveStatic = require(&#39;serve-static&#39;)
+var app = express()
+app.use(serveStatic(__dirname + &#39;/public-optimized&#39;))
+app.use(serveStatic(__dirname + &#39;/public&#39;))
+app.listen(3000)
+#### Different settings for paths
+This example shows how to set a different max age depending on the served
+file type. In this example, HTML files are not cached, while everything else
+is for 1 day.
+var express = require(&#39;express&#39;)
+var serveStatic = require(&#39;serve-static&#39;)
+var app = express()
+app.use(serveStatic(__dirname + &#39;/public&#39;, {
maxAge: &#39;1d&#39;,
setHeaders: setCustomCacheControl
+app.listen(3000)
+function setCustomCacheControl(res, path) {
if (serveStatic.mime.lookup(path) === &#39;text/html&#39;) {
// Custom Cache-Control for HTML files
res.setHeader(&#39;Cache-Control&#39;, &#39;public, max-age=0&#39;)
+## License
+[MIT](LICENSE)
+[npm-image]: https://img.shields.io/npm/v/serve-static.svg
+[npm-url]: https://npmjs.org/package/serve-static
+[travis-image]: https://img.shields.io/travis/expressjs/serve-static/master.svg?label=linux
+[travis-url]: https://travis-ci.org/expressjs/serve-static
+[appveyor-image]: https://img.shields.io/appveyor/ci/dougwilson/serve-static/master.svg?label=windows
+[appveyor-url]: https://ci.appveyor.com/project/dougwilson/serve-static
+[coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-static/master.svg
+[coveralls-url]: https://coveralls.io/r/expressjs/serve-static
+[downloads-image]: https://img.shields.io/npm/dm/serve-static.svg
+[downloads-url]: https://npmjs.org/package/serve-static
+[gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg
+[gratipay-url]: https://gratipay.com/dougwilson/
Index: array-flatten/LICENSE
===================================================================
--- array-flatten/LICENSE (revision 0)
+++ array-flatten/LICENSE (revision 2)
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+Copyright (c) 2014 Blake Embrey ()
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the &Software&), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED &AS IS&, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
Index: array-flatten/package.json
===================================================================
--- array-flatten/package.json (revision 0)
+++ array-flatten/package.json (revision 2)
@@ -0,0 +1,62 @@
&name&: &array-flatten&,
&version&: &1.1.1&,
&description&: &Flatten an array of nested arrays into a single flat array&,
&main&: &array-flatten.js&,
&files&: [
&array-flatten.js&,
&scripts&: {
&test&: &istanbul cover _mocha -- -R spec&
&repository&: {
&type&: &git&,
&url&: &git://github.com/blakeembrey/array-flatten.git&
&keywords&: [
&flatten&,
&arguments&,
&author&: {
&name&: &Blake Embrey&,
&email&: &&,
&url&: &http://blakeembrey.me&
&license&: &MIT&,
&url&: &https://github.com/blakeembrey/array-flatten/issues&
&homepage&: &https://github.com/blakeembrey/array-flatten&,
&devDependencies&: {
&istanbul&: &^0.3.13&,
&mocha&: &^2.2.4&,
&pre-commit&: &^1.0.7&,
&standard&: &^3.7.3&
&gitHead&: &d408e1e8f585a00c8be9edbd1803&,
&_id&: &array-flatten@1.1.1&,
&_shasum&: &9a5feaea2955d2&,
&_from&: &array-flatten@1.1.1&,
&_npmVersion&: &2.11.3&,
&_nodeVersion&: &2.3.3&,
&_npmUser&: {
&name&: &blakeembrey&,
&email&: &&
&maintainers&: [
&name&: &blakeembrey&,
&email&: &&
&shasum&: &9a5feaea2955d2&,
&tarball&: &http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz&
&directories&: {},
&_resolved&: &https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz&,
&readme&: &ERROR: No README data found!&
Index: array-flatten/array-flatten.js
===================================================================
--- array-flatten/array-flatten.js (revision 0)
+++ array-flatten/array-flatten.js (revision 2)
@@ -0,0 +1,64 @@
+&#39;use strict&#39;
+ * Expose `arrayFlatten`.
+module.exports = arrayFlatten
+ * Recursive flatten function with depth.
+ * @param
+ * @param
+ * @param
{Number} depth
+ * @return {Array}
+function flattenWithDepth (array, result, depth) {
for (var i = 0; i & array. i++) {
var value = array[i]
if (depth & 0 && Array.isArray(value)) {
flattenWithDepth(value, result, depth - 1)
result.push(value)
return result
+ * Recursive flatten function. Omitting depth is slightly faster.
+ * @param
{Array} array
+ * @param
{Array} result
+ * @return {Array}
+function flattenForever (array, result) {
for (var i = 0; i & array. i++) {
var value = array[i]
if (Array.isArray(value)) {
flattenForever(value, result)
result.push(value)
return result
+ * Flatten an array, with the ability to define a depth.
+ * @param
+ * @param
{Number} depth
+ * @return {Array}
+function arrayFlatten (array, depth) {
if (depth == null) {
return flattenForever(array, [])
return flattenWithDepth(array, [], depth)
Index: array-flatten/README.md
===================================================================
--- array-flatten/README.md (revision 0)
+++ array-flatten/README.md (revision 2)
@@ -0,0 +1,43 @@
+# Array Flatten
+[![NPM version][npm-image]][npm-url]
+[![NPM downloads][downloads-image]][downloads-url]
+[![Build status][travis-image]][travis-url]
+[![Test coverage][coveralls-image]][coveralls-url]
+& Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
+## Installation
+npm install array-flatten --save
+```javascript
+var flatten = require(&#39;array-flatten&#39;)
+flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
+//=& [1, 2, 3, 4, 5, 6, 7, 8, 9]
+flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
+//=& [1, 2, 3, [4, [5], 6], 7, 8, 9]
+(function () {
flatten(arguments) //=& [1, 2, 3]
+})(1, [2, 3])
+## License
+[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
+[npm-url]: https://npmjs.org/package/array-flatten
+[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
+[downloads-url]: https://npmjs.org/package/array-flatten
+[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
+[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
+[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
Index: cookie/README.md
===================================================================
--- cookie/README.md (revision 0)
+++ cookie/README.md (revision 2)
@@ -0,0 +1,64 @@
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+cookie is a basic cookie parser and serializer. It doesn&#39;t make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.
+See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.
+npm install cookie
+```javascript
+var cookie = require(&#39;cookie&#39;);
+var hdr = cookie.serialize(&#39;foo&#39;, &#39;bar&#39;);
+// hdr = &#39;foo=bar&#39;;
+var cookies = cookie.parse(&#39;foo= cat= dog=ruff&#39;);
+// cookies = { foo: &#39;bar&#39;, cat: &#39;meow&#39;, dog: &#39;ruff&#39; };
+The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.
+& cookie path
+### expires
+& absolute expiration date for the cookie (Date object)
+### maxAge
+& relative max age of the cookie from when the client receives it (seconds)
+### domain
+& domain for the cookie
+### secure
+& true or false
+### httpOnly
+& true or false
+## License
+[MIT](LICENSE)
+[npm-image]: https://img.shields.io/npm/v/cookie.svg
+[npm-url]: https://npmjs.org/package/cookie
+[node-version-image]: https://img.shields.io/node/v/cookie.svg
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/cookie/master.svg
+[travis-url]: https://travis-ci.org/jshttp/cookie
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/cookie/master.svg
+[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/cookie.svg
+[downloads-url]: https://npmjs.org/package/cookie
Index: cookie/LICENSE
===================================================================
--- cookie/LICENSE (revision 0)
+++ cookie/LICENSE (revision 2)
@@ -0,0 +1,23 @@
+(The MIT License)
+Copyright (c)
Roman Shtylman &&
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+&#39;Software&#39;), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED &#39;AS IS&#39;, WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: cookie/index.js
===================================================================
--- cookie/index.js (revision 0)
+++ cookie/index.js (revision 2)
@@ -0,0 +1,116 @@
+ * cookie
+ * Copyright(c)
Roman Shtylman
+ * MIT Licensed
+ * Module exports.
+ * @public
+exports.parse =
+exports.serialize =
+ * Module variables.
+ * @private
+var decode = decodeURIC
+var encode = encodeURIC
+ * Parse a cookie header.
+ * Parse the given cookie header string into an object
+ * The object has the various cookies as keys(names) =& values
+ * @param {string} str
+ * @param {object} [options]
+ * @return {string}
+ * @public
+function parse(str, options) {
var obj = {}
var opt = options || {};
var pairs = str.split(/; */);
var dec = opt.decode ||
pairs.forEach(function(pair) {
var eq_idx = pair.indexOf(&#39;=&#39;)
// skip things that don&#39;t look like key=value
if (eq_idx & 0) {
var key = pair.substr(0, eq_idx).trim()
var val = pair.substr(++eq_idx, pair.length).trim();
// quoted values
if (&#39;&&#39; == val[0]) {
val = val.slice(1, -1);
// only assign once
if (undefined == obj[key]) {
obj[key] = tryDecode(val, dec);
+ * Serialize data into a cookie header.
+ * Serialize the a name value pair into a cookie string suitable for
+ * http headers. An optional options object specified cookie parameters.
+ * serialize(&#39;foo&#39;, &#39;bar&#39;, { httpOnly: true })
=& &foo= httpOnly&
+ * @param {string} name
+ * @param {string} val
+ * @param {object} [options]
+ * @return {string}
+ * @public
+function serialize(name, val, options) {
var opt = options || {};
var enc = opt.encode ||
var pairs = [name + &#39;=&#39; + enc(val)];
if (null != opt.maxAge) {
var maxAge = opt.maxAge - 0;
if (isNaN(maxAge)) throw new Error(&#39;maxAge should be a Number&#39;);
pairs.push(&#39;Max-Age=&#39; + maxAge);
if (opt.domain) pairs.push(&#39;Domain=&#39; + opt.domain);
if (opt.path) pairs.push(&#39;Path=&#39; + opt.path);
if (opt.expires) pairs.push(&#39;Expires=&#39; + opt.expires.toUTCString());
if (opt.httpOnly) pairs.push(&#39;HttpOnly&#39;);
if (opt.secure) pairs.push(&#39;Secure&#39;);
return pairs.join(&#39;; &#39;);
+ * Try decoding a string using a decoding function.
+ * @param {string} str
+ * @param {function} decode
+ * @private
+function tryDecode(str, decode) {
return decode(str);
} catch (e) {
Index: cookie/package.json
===================================================================
--- cookie/package.json (revision 0)
+++ cookie/package.json (revision 2)
@@ -0,0 +1,69 @@
&name&: &cookie&,
&description&: &cookie parsing and serialization&,
&version&: &0.1.3&,
&author&: {
&name&: &Roman Shtylman&,
&email&: &&
&license&: &MIT&,
&keywords&: [
&repository&: {
&type&: &git&,
&url&: &git+https://github.com/jshttp/cookie.git&
&devDependencies&: {
&istanbul&: &0.3.9&,
&mocha&: &1.x.x&
&files&: [
&LICENSE&,
&README.md&,
&index.js&
&engines&: {
&node&: &*&
&scripts&: {
&test&: &mocha --reporter spec --bail --check-leaks test/&,
&test-ci&: &istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/&,
&test-cov&: &istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/&
&gitHead&: &ff920a7b92e1d1a3b&,
&url&: &https://github.com/jshttp/cookie/issues&
&homepage&: &https://github.com/jshttp/cookie&,
&_id&: &cookie@0.1.3&,
&_shasum&: &e734a5c1417fce472d5aef82c381cabb64d1a435&,
&_from&: &cookie@0.1.3&,
&_npmVersion&: &1.4.28&,
&_npmUser&: {
&name&: &dougwilson&,
&email&: &&
&maintainers&: [
&name&: &defunctzombie&,
&email&: &&
&name&: &dougwilson&,
&email&: &&
&name&: &jongleberry&,
&email&: &&
&shasum&: &e734a5c1417fce472d5aef82c381cabb64d1a435&,
&tarball&: &http://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz&
&directories&: {},
&_resolved&: &https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz&,
&readme&: &ERROR: No README data found!&
Index: content-disposition/README.md
===================================================================
--- content-disposition/README.md (revision 0)
+++ content-disposition/README.md (revision 2)
@@ -0,0 +1,141 @@
+# content-disposition
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+Create and parse HTTP `Content-Disposition` header
+## Installation
+$ npm install content-disposition
+var contentDisposition = require(&#39;content-disposition&#39;)
+### contentDisposition(filename, options)
+Create an attachment `Content-Disposition` header value using the given file name,
+if supplied. The `filename` is optional and if no file name is desired, but you
+want to specify `options`, set `filename` to `undefined`.
+res.setHeader(&#39;Content-Disposition&#39;, contentDisposition(&#39;∫ maths.pdf&#39;))
+**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this
+header through a means different from `setHeader` in Node.js, you&#39;ll want to specify
+the `&#39;binary&#39;` encoding in Node.js.
+#### Options
+`contentDisposition` accepts these properties in the options object.
+##### fallback
+If the `filename` option is outside ISO-8859-1, then the file name is actually
+stored in a supplemental field for clients that support Unicode file names and
+a ISO-8859-1 version of the file name is automatically generated.
+This specifies the ISO-8859-1 file name to override the automatic generation or
+disables the generation all together, defaults to `true`.
- A string will specify the ISO-8859-1 file name to use in place of automatic
generation.
- `false` will disable including a ISO-8859-1 file name and only include the
Unicode version (unless the file name is already ISO-8859-1).
- `true` will enable automatic generation if the file name is outside ISO-8859-1.
+If the `filename` option is ISO-8859-1 and this option is specified and has a
+different value, then the `filename` option is encoded in the extended field
+and this set as the fallback field, even though they are both ISO-8859-1.
+##### type
+Specifies the disposition type, defaults to `&attachment&`. This can also be
+`&inline&`, or any other value (all values except inline are treated like
+`attachment`, but can convey additional information if both parties agree to
+it). The type is normalized to lower-case.
+### contentDisposition.parse(string)
+var disposition = contentDisposition.parse(&#39; filename=&EURO rates.txt&; filename*=UTF-8\&#39;\&#39;%e2%82%ac%20rates.txt&&#39;);
+Parse a `Content-Disposition` header string. This automatically handles extended
+(&Unicode&) parameters by decoding them and providing them under the standard
+paramete

我要回帖

更多关于 cad螺旋线画法 的文章

 

随机推荐