【发布时间】:2011-06-15 08:26:45
【问题描述】:
如果网站用户通过以下方式提交 HTML 表单:(1) post 方法; (2) 多部分/表单数据编码类型;并且,(3)一个大附件,服务器可以上传一个posted文件,并在文件上传完成之前发送一个服务器生成的HTTP响应,而不使用AJAX?
那是相当密集的。所以,我写了一个例子来说明我的意思。假设有一个带有标题字段的图像上传表单。
<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>
我想将标题存储在具有定义的数据库表中:
[文件表]
- file_id [唯一标识符]
- 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 检查状态更新,但这不是这个问题要问的。我特意问的是响应发送后文件是否可以继续上传。
【问题讨论】:
-
您可以使用 JavaScript 轻松显示“上传”状态。真的不需要 AJAX。
标签: ajax forms file-upload xmlhttprequest http-post