Вероятно, сценарий состоит в том, что вы, безусловно, можете отправить ответ, как только узнаете, что был сделан какой-либо запрос, даже до получения заголовков, но браузер, скорее всего, просто отправит все тело, прежде чем он даже попытается прочитать или проанализировать ответ , Таким образом, все будет загружено, пока 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, но это не то, что задает этот вопрос. Я специально спрашиваю, может ли файл продолжить загрузку после отправки ответа.

Ответы на вопрос(1)

Ваш ответ на вопрос