Это не работает, потому что у вас есть "" вокруг свойств внутри вашего объекта. Вы можете исправить это, удалив символ "" или сделав это:
raffles[0]['entries'].push(//your code here);
Когда свойства объекта являются строками (т.е. когда они заключены в кавычки) вы должны получить доступ к этому свойству, используя «точечную нотацию»
например:
var object = {"property":"five"};
console.log(object["property"]); //prints 'five'
console.log(object.property); //throws an error
Это полностью синхронно, как вы можете видеть, посмотрев на реализацию HttpResponse.WriteFile
с Lutz Reflector. Вы можете удалить файл сразу после вызова Response.WriteFile
.
У вас нет гарантии, что поток ответа был полностью передан клиенту, но вы вызываете Response.Flush
также не дает вам такой гарантии. Поэтому я не вижу необходимости вызывать Response.Flush
перед удалением файла.
Избегайте загрузки файла в MemoryStream
, это не принесет вам пользы и имеет затраты на использование памяти, особенно для больших файлов.
Если Вы пишете файл клиенту с Response.WriteFile()
, вызов к Response.Flush()
удостоверится, что это было полностью произведено клиенту. После того как это сделало Вас, может удалить его прочь веб-сервера.
Можно хотеть придумать более устойчивую систему, если файл имеет жизненно важное значение. Скажите, клиентский сценарий для проверки этого, файл был получен хорошо и затем предупреждает веб-сервер, что файл может быть удален.
TransmitFile
Можно также назвать TransmitFile, чтобы позволить IIS заботиться о нем. Это на самом деле отправляется IIS за пределами Вашего процесса рабочего.
Поток памяти
Если Вы ДЕЙСТВИТЕЛЬНО параноики, не отправляйте файл. Загрузите его в поток памяти (если размер разумен), и передайте это. Затем можно удалить файл каждый раз, когда Вам нравится. Файл на диске никогда не будет затрагиваться IIS.
Если не изменяет память, это синхронно, как остальная часть команд ОТВЕТА.
Это решение. После использования синтаксиса Response.WriteFile (fileName);
введите следующие строки кода:
Response.Flush();
System.IO.File.Delete(fullPathFileName);
Response.End();