【问题标题】:ASP.Net not populating Request.Files on receiving multipart dataASP.Net 在接收多部分数据时未填充 Request.Files
【发布时间】:2011-04-19 10:11:44
【问题描述】:

我使用 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=*********************** HTTP_HOST:192.168.1.2 HTTP_USER_AGENT:Dalvik/1.2.0 (Linux; U; Android 2.2; sdk Build/FRF91) "

HTTP_CONTENT_LENGTH 显示正确的长度。我想我将不得不进行二进制读取,然后解析内容并存储文件内容。以前有没有人这样做过,或者是否有可用的库/类?

谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

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

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

    2) 将内容配置写在表格中:

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

    3) 编写内容类型

    4) 写一个空行

    5) 将字节写入请求流

    6) 写结束边界,它标志着请求的结束。格式如下:

    “--”+边界+“--”

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

    下面是示例上传请求在 fiddler 等 Http 调试工具中的外观:

    -----634388181001966332

    内容配置:表单数据;名称="文件";文件名="cald_3d.JPG"

    内容类型:应用程序/八位字节流

    1010101001...(更多字节)

    -----634388181001966332--

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

    【讨论】:

    • 我猜没有添加换行符。解决它。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    相关资源
    最近更新 更多