当前位置: 首页 > 面试题库 >

是或否:服务器仍可以从相关的HTTP请求上载文件的同时发送HTTP响应吗?

薛兴德
2023-03-14
问题内容

如果网站用户使用以下内容提交HTML表单:(1)发布方法;(2)多部分/表单数据编码;(3)较大的附件,服务器可以在不使用AJAX的情况下上传文件,并在文件上传完成之前发送服务器生成的HTTP响应吗?

太密了。因此,我写了一个例子来说明我的意思。假设有一个带有标题字段的图片上传表单。

  <form action="upload-with-caption/" method="post" enctype="multipart/form-data">
    <input type="hidden" id="hiddenInfo" name="hiddenInfo" />
    File:     <input type="file" name="imgFile" id="imgFile" /><br />
    Caption:  <input type="text" name="caption" id="caption" />
        <input type="submit" />
  </form>

我想将标题存储在具有定义的数据库表中:

[files_table]

  • file_id [uniqueidentifier]
  • file_caption [varchar(500)]
  • file_status [int]

然后,我要将文件上传到/root/{unique-id}/filename.ext

file_status映射到具有以下定义的C#枚举:

enum  FileUploadStatus{
    Error = 0,
    Uploading = 1,
    Uploaded = 2
}

提交表单后,如果文件太大而无法在1秒钟内处理,我想向网页发送回一个响应,说当前正在上传。

我可以使用单个同步HTTP发布来执行此操作吗?

注意:很明显,我稍后会使用AJAX检查状态更新,但这不是这个问题要问的内容。 我专门询问发送响应后文件是否可以继续上传。


问题答案:

HTTP是一个同步协议。
在收到整个请求之前,您无法发送回复。



 类似资料:
  • 我试图在Flutter应用程序中使用AWS DynamoDB,由于缺乏官方的AWS Dart SDK,我被迫使用低级别的HTTP REST API。 签署AWS HTTP请求的方法非常繁琐,但使用AWS提供的示例作为指导,我能够相对轻松地将Python转换为Dart。最终结果是两组代码产生相同的身份验证签名。 当我真的去发送请求时,我的问题来了。Python的工作原理与预期一致,但使用Dart的H

  • 我试图理解我在其他文章中看到的关于同步和异步web请求的术语,因此,在下面的场景中: 客户机同步地向服务器发送请求(这意味着客户机被阻塞,直到它收到响应),服务器异步地制定响应(它为每个请求启动一个新线程,并在该线程上创建响应)。 请求本身是同步的,而请求的处理是异步的吗?

  • 我目前正在开发一个新的REST Web服务,它是在Django REST Framework中开发的,在定义URL时,我对它的安全性表示怀疑。遵循为数据库中的列表数据定义GET方法的标准,我不明白这是否是一种安全的数据获取方法。 想象一下这种情况: 我访问一个URL /patients定义为返回患者列表。此列表不是公开的,只能由授权用户请求。由于并非所有用户都可以查看所有患者,因此我创建了一个哈希

  • 在行引发异常: 线程“main”javax.net.ssl.SSLHandShaker异常:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:无法在Sun.Security.SSL.Alerts.GetSleXception(

  • 关于HTTP连接关闭,我有两个问题: > 如果一个客户端通过连接发送一个HTTP请求:靠近HTTP服务器,那么在客户端收到响应后,HTTP服务器还是客户端有责任发送TCP FIN? 如果客户端发送了一个格式错误的HTTP请求,而服务器发送了一个400错误的请求,那么最好的做法是通过服务器关闭连接(即使HTTP请求有connection:keep alive),还是保持连接仍然处于活动状态? 提前感