编程焦虑症

我想我患有中度编程焦虑症. 昨天一天都在焦虑中度过,没有做成任何事情. 大脑意识混乱, 无法集中

精力思考. 结果在晚上回家的路上, 一天遇到的纠结问题都找到了答案.

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

IE文件下载,未知文件类型问题[

附件BUG:附件名称中出现双空格以上  则下载文件为未知类型文件

如何为已知的 MIME 类型激活“文件下载”对话框

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, 沟通不给力.

转载于:https://www.cnblogs.com/andysunndy/archive/2011/07/14/2106466.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值