博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文本域(input file)上传文件的深入探究
阅读量:6243 次
发布时间:2019-06-22

本文共 1597 字,大约阅读时间需要 5 分钟。

  最近在要做一个文件上传方面的功能,看了一些资料,有收获在这里跟大家分享一下。

  大家应该都知道html表单元素<input type="file"/>是用来上传文件的。但是它究竟是如何传递的后台,后台又如何将数据提取出来呢?我们一起来看看。

  首先我们写一个普通的表单提交。

  

View Code
1 
2
3

 

  然后新建一个一般处理程序upload.ashx,ProcessRequest内的代码如下。

  

1             context.Response.ContentType = "text/plain";  2             HttpRequest request = context.Request;  3             int totalByets = request.TotalBytes;//传入数据流的总大小             4             int readedBytes = 0;  5             byte[] biData;  6             string end = "";  7             while (readedBytes < totalByets)  8             {
9 if ((totalByets - readedBytes) < 1024) 10 biData = request.BinaryRead(totalByets); 11 else 12 biData = request.BinaryRead(1024); 13 Encoding encod = Encoding.Default; 14 readedBytes += 1024; 15 end += encod.GetString(biData); 16 } 17 context.Response.Write(end); 18 context.Response.End();

 

我们新建一个文本文档test.txt。假设内容为“测试文档”。

运行上面的网页,选择文件test.txt.我们将看到如下内容。

 

------WebKitFormBoundaryNfHsy1JK9aIAQ0SSContent-Disposition: form-data; name="file1"; filename="test.txt"Content-Type: text/plain测试文档------WebKitFormBoundaryNfHsy1JK9aIAQ0SS--
 
由此看见,由表单提交上来的数据流中包含了一些如文件名、文件类型等信息。同时这些信息是用一些特定的字符包裹的。如本例中的“------WebKitFormBoundaryNfHsy1JK9aIAQ0SS”。(可以用context.Request.ServerVariables[HTTP_CONTENT_TYPE]取到)
同样如果是选择图片文件的话,情况类似。
以上只是为了搞懂form传过来的数据结构。我们可以直接使用context.Request.Files来获取表单传递过来的文件。

 

 

转载于:https://www.cnblogs.com/hnlong1/archive/2011/11/08/2240494.html

你可能感兴趣的文章
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>
Cassandra监控 - OpsCenter手册
查看>>
《黑客与画家》读摘
查看>>
android 客户端 Cookie处理
查看>>
localtime与localtime_r
查看>>
Script to Collect Data Guard Diagnostic Information
查看>>