ASP.Net在接收多部分数据时没有填充Request.Files

时间:2011-04-19 10:11:44

标签: asp.net

我使用multipart / form-data作为内容类型将文件从Android应用程序发送到asp.net webform。但是,不会填充Request.files属性。阅读Request对象,我得到以下内容

Request.Params( “ALL_HTTP”)

“HTTP_CONNECTION:Keep-Alive HTTP_CONTENT_LENGTH:8913 HTTP_CONTENT_TYPE:multipart / form-data; boundary = * ** * ** * < / EM> ** * ** * ** * ** * **** HTTP_HOST:192.168.1.2 HTTP_USER_AGENT:Dalvik / 1.2.0(Linux; U; Android 2.2; sdk Build / FRF91)“

HTTP_CONTENT_LENGTH显示正确的长度。我想我将不得不进行二进制读取,然后解析内容并存储文件内容。有没有人以前做过这个或者有没有图书馆/班级?

由于

2 个答案:

答案 0 :(得分:1)

您如何将文件写入请求流?以编程方式上载文件(二进制流)时,应遵循以下规则:

1)写一个边界(它可以是以两个破折号为前缀的任何东西)。这是一个示例边界:

private string boundary = "----" + DateTime.Now.Ticks;

2)以下列形式写出内容处理:

Content-Disposition: form-data; name="{name}"; filename="{filename}" 

3)写出内容类型

4)写一个空行

5)将字节写入请求流

6)写出结束边界,它标志着请求的结束。它应该是以下形式:

“ - ”+ boundary +“ - ”

7)写一个空行并刷新(如果需要)请求。

以下是样本上传请求应该在像fiddler这样的Http调试工具中查看的内容:

------ 634388181001966332

内容 - 处置:表单数据; NAME = “文件”;文件名= “cald_3d.JPG”

Content-Type:application / octet-stream

1010101001 ...(更多字节)

------ 634388181001966332 -

然后,在服务器上,使用Request.Files [name]访问该文件,该名称与指定Content Disposition时使用的名称相同。祝你好运:)

答案 1 :(得分:1)

我以更清洁的方式完成了所有这些工作。你可以找到它here

欢呼声

Fahar