Http и загрузка файла - Как это действительно работает (под капотом)

Вот как Typescript переводит его enum в Javascript:

var makeEnum = function(obj) {
    obj[ obj['Active'] = 1 ] = 'Active';
    obj[ obj['Closed'] = 2 ] = 'Closed';
    obj[ obj['Deleted'] = 3 ] = 'Deleted';
}

Теперь:

makeEnum( NewObj = {} )
// => {1: "Active", 2: "Closed", 3: "Deleted", Active: 1, Closed: 2, Deleted: 3}

Сначала я был озадачен, почему obj[1] возвращает 'Active', но затем понял, что его просто - оператор присваивания присваивает значение, а затем возвращает его:

obj['foo'] = 1
// => 1
16
задан Sheff 24 June 2009 в 16:35
поделиться

2 ответа

Your friend is right. If you want an AJAX progress bar, you have to jump through some hoops.

Usually the technique is to post the upload inside an iframe to an IHttpHandler on the server that stores progress on the server in a server-wide dictionary keyed by an identifier the client makes up and includes in both the AJAX progress request and the upload post. That way, when the client makes the AJAX requests, the server code processing that request can read the value from that dictionary to see how many bytes of the file POST request the server has processed.

Yes, it's complicated :)

9
ответ дан 30 November 2019 в 22:43
поделиться

Думаю, ваш друг прав, файл закодирован в сообщение, отправленное на сервер. Если вы действительно хотите увидеть, как именно это работает, попробуйте использовать Tamper Data в Firefox для просмотра фактических данных публикации.

ETA:

Загрузки в стиле AJAX, о которых вы упомянули, работают, создавая сообщение в скрытый iframe, а затем с помощью запросов AJAX для проверки хода загрузки на стороне сервера.

7
ответ дан 30 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: