代码之家  ›  专栏  ›  技术社区  ›  Midnight_Blaze

是否可以在不等待整个表单到达的情况下访问通过多部分/表单数据发送的参数

  •  2
  • Midnight_Blaze  · 技术社区  · 7 年前

    . 到达需要大约30秒,我不希望仅仅为了访问随文件一起发送的参数而等待那么长时间。

    这可以使用头文件或任何其他方法来完成吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    4 年前

    流与缓冲

    这是关于如何设置Web服务器的。对于IIS,您可以启用流。

    否则,默认情况下,IIS将使用“缓冲”——在IIS中运行的应用程序可以获取请求之前,整个请求首先加载到内存(您无法访问的IIS内存)。

    Streaming large file uploads to ASP.NET MVC

    注意在内部循环中读取文件的方式:

            while ((cbRead = clientRequest.InputStream.Read(rgbBody, 0, rgbBody.Length)) > 0)
            {
                fileStream.Write(rgbBody, 0, cbRead);
            }
    

    您可能无法解析它,只需将您拥有的内容转储到json或xml解析器中,顶部会有一个未关闭的标记或},直到视频数据上传后才关闭(不管怎样)。或者,如果它是来自表单提交的多部分数据,正如您所暗示的那样,您必须自己解析该部分上传,而不仅仅是向IIS请求post数据。

    证明

    要使其正常工作,还意味着您必须对客户端及其发送数据的方式进行一些控制。

    这是因为您至少必须确保它首先发送文件参数!

    这让我担心,因为如果你控制了客户端,为什么你不能采用简单的方法(正如Nobody和Nkosi所暗示的那样)并使用2个请求?你说你需要一个。为什么不编写js客户端代码,首先在XHR中发送参数,然后在第二个请求中发送文件,并在两者中使用相关ID将它们联系在一起?(服务器可以从第一个请求返回此信息,您可以在第二个请求中发送)。

    显然,如果你只是有一个带有一些输入和文件上传并提交的表单,那么你需要一个请求;-)但是如果你能控制客户端,你就不会被束缚住。

    祝你好运,这里有一些高级编程,但没有超高科技。你会成功的!!!

    您可能被卡住了,如果服务器应用程序的Web服务器正在缓冲,服务器应用程序将什么也得不到,当然,如果您想先处理文件参数,这实际上意味着您可以控制服务器端;-)