Вероятно, сценарий состоит в том, что вы, безусловно, можете отправить ответ, как только узнаете, что был сделан какой-либо запрос, даже до получения заголовков, но браузер, скорее всего, просто отправит все тело, прежде чем он даже попытается прочитать или проанализировать ответ , Таким образом, все будет загружено, пока TCP для ответа не будет работать, и это будет продолжаться до тех пор, пока браузер не начнет обрабатывать ответ после отправки всего файла. Таким образом, JS не может получить доступ к ответу, пока файл не будет отправлен полностью.
пользователь веб-сайта отправляет HTML-форму с: (1) методом публикации; (2) многочастный / форма-данные-энктип; и (3) большой вложенный файл, может ли сервер загрузить опубликованный файл и отправить сгенерированный сервером 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>
Я хочу сохранить заголовок в таблице базы данных с определением:
[Files_table]
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, но это не то, что задает этот вопрос. Я специально спрашиваю, может ли файл продолжить загрузку после отправки ответа.