编程焦虑症
我想我患有中度编程焦虑症. 昨天一天都在焦虑中度过,没有做成任何事情. 大脑意识混乱, 无法集中
精力思考. 结果在晚上回家的路上, 一天遇到的纠结问题都找到了答案.
1st
有这样个需求. 当用户登陆网站后可以下载一份属于自己的注册码文件. 文件内容基本一致,只需
替换几个占位符即可. 我自作聪明的想: 假如不在物理磁盘上生成文件, 只需要存储一份模板文件,
然后将文件里某些内容替换, 即可返回用户自己的注册码文件. 这样岂不很好?
于是我尝试去写这样的处理逻辑. 但写到一半,不得不中止. 我怎么才能让用户,或者说是浏览器知道
这是个要下载的文件呢? 按我现在这样的写法,只是将内容输出到了网页上,并不会提示用户下载.
然后我又想到了个办法: 直接在某目录下保存所有用户的注册码文件, 然后当某个用户想要下载时,
在这个目录中找出来, 通过 Redirect() 这个函数跳转到这个文件, 来达到提示用户下载文件的目的.
这样做有安全问题: 如果被有心人找出来了这个文件的路径规则, 岂不很容易就获取了所有用户的
注册码文件地址? 也可以限定文件夹访问权限, 可并没有限定文件的访问权限. 如果设定文件不允许
读取,那么 Redirect() 函数也会失败的.
=============================================
这个时候编程焦虑症也出来了. 我不停的看时间, 整个人进入了一种焦躁的状态.
=============================================
直到今天Google了下才知道. Http 协议中有专门的指令来告知浏览器, 本次响应的是一个需要下载的
文件. 格式如下:
Content-Disposition: attachment;filename=filename.ext
以上指令即标记此次响应流是附件,且附件文件名为 filename.ext
关于该指令需要注意三点:
1: 中文文件名需要进行URLEncode编码, 否则在IE 6 下会提示是”无法识别的文件”.
但经实际测试,在Chrome下不进行URLEncode编码, 也能正常显示.
2: 文件名不能有空格, 否则也会被认为是”无法识别的文件”.
3: [ASP.Net中] 向响应流中添加该指令必须使用 response.AddHeader() 函数; 使用
response.Header.Add() 则会报错.
MSDN中关于 AddHeader() 函数的介绍如下:
将一个 HTTP 标头添加到输出流。提供 AddHeader 是为了与 ASP 的先前版本保持兼容。
AddHeader 与 AppendHeader 一样,提供它只是为了与 ASP 的先前版本保持兼容。在 ASP.NET 中,使用 AppendHeader。
MSDN中关于 Headers 属性的介绍如下:
获取响应标头的集合。
只有在 IIS 7.0 处于集成管线模式而且 .NET Framework 至少为 3.0 版本时,才支持 Headers 属性。如果您尝试访问 Headers 属性并且不满足上述两个条件中的任何一个条件,则会引发 PlatformNotSupportedException。
关于Headers 的介绍,充分说明了为什么有时候使用response.Header.Add() 函数会报错. 这与
类库版本和IIS的设置有关.
以上内容,本人参考了如下资料:
How to download file from website- Java / Jsp
附件BUG:附件名称中出现双空格以上 则下载文件为未知类型文件
2th
老板要求,将一个特定的文件集中添加到一批RAR压缩包中. 而且需要定期更新, 即带打包的文件是
在不断的更新. 在有更新的情况下, 删除那批RAR压缩包中的旧文件,将更新后的文件再打包进去.
略事思考后,为了节省以后的时间,提高工作效率. 本人决定采用批处理命令来自动化以上过程.
经过翻阅一番资料和尝试后, 得出如下 批处理脚本:
for /f "tokens=4" %b in ('dir d:\*.rar') do if not "%b" == "软件" if not "%b" == "字节" if not "%b" == "可用字节" (
"c:\Program Files\WinRAR\rar.exe" d "%b" "rar.txt" )
(注: 以上是删除脚本, 添加脚本类似.)
但问题是: 如何在服务器上执行这个脚本?
首先想到的是: 使用Process来动态的加载执行这个批处理脚本. 结果待俺写了个程序一看, 都快
卡死了. 我在本地执行了这个脚本. 发现, 卡是因为RAR在将新文件加进到压缩包时,很慢.
其实直接拷贝脚本到服务器上运行就可以了. 但我不是服务器管理员, 上服务器得麻烦公司服务器
管理员. 而我不想老就这些琐碎的事情去麻烦他. 于是, 我开始纠结.
今天找直接领导说了这件事情,希望能给单独开一个账号,这样不用老去麻烦服务器管理员. 领导和
服务器管理员沟通了下, 结果人家说, 没事,别怕, 俺不厌其烦.
我晕.
通过昨天的事情. 我发现:
1, 对Http协议的了解不够全面.
2, 对工作的安排不合理, 总会一大堆事情全部集中出现.
3, 沟通不给力.
posted on 2011-07-14 15:53 sunshaozong 阅读(323) 评论(0) 编辑 收藏 举报