我使用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显示正确的长度。我想我将不得不进行二进制读取,然后解析内容并存储文件内容。有没有人以前做过这个或者有没有图书馆/班级?
由于
答案 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)