Хорошо, все здесь как различное мнение относительно компромиссов и преимуществ xrange по сравнению с диапазоном. Они главным образом корректны, xrange является итератором, и диапазон излагает в деталях и создает фактический список. Для большинства случаев Вы действительно не заметите различия между двумя. (Можно использовать карту с диапазоном, но не с xrange, но это израсходовало больше памяти.)
, Что я думаю, что Вы сплачиваетесь, хотят услышать, однако, то, что предпочтительным вариантом является xrange. Так как диапазон в Python 3 является итератором, инструмент преобразования кода 2to3 правильно преобразует все использование xrange для расположения и выведет ошибку или предупреждение для использования диапазона. Если Вы захотите убедиться легко преобразовать свой код в будущем, то Вы будете использовать xrange только и список (xrange), когда Вы будете уверены, что хотите список. Я изучил это во время спринта CPython в PyCon в этом году (2008) в Чикаго.
Недавно мы столкнулись с идентичной проблемой с нашей реализацией для загрузки сгенерированных отчетов в нашу настраиваемую веб-структуру. Исследования привели нас к тому, что мы попробовали тот же подход, о котором вы упомянули (настройка Content-Disposition).
Проблема связана с IE7 и зонами безопасности. По умолчанию определенные действия ДОЛЖНЫ быть явно инициированы пользователем. Вы можете начать с изучения Общие сведения и работа в защищенном режиме Internet Explorer и Об ограничениях окон
Не имеет отношения к этой проблеме, но вам нужно указать имя файла в кавычках. Пробелы в имени файла испортят имя файла при загрузке файла.
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "." + m_format +"\"");
Попробовать
protected void Button1_Click (отправитель объекта, EventArgs e) { Response.ContentType = "приложение / pdf"; Response.Clear (); Response.TransmitFile ("test.pdf"); Response.End (); }
Если вы добавите свою страницу на доверенные сайты, вы сможете скачать файл. Во время разработки все ваши сайты находятся в этой зоне.
Вы можете попробовать принудительно запустить Internet Explorer, добавив
HttpContext.Current.ApplicationInstance.CompleteRequest();
в конец вашего запроса.
В противном случае вы можете попытаться опубликовать ссылку на документ, поэтому браузер видит запрос как ответ на взаимодействие с пользователем.
Если открывать новую страницу с помощью javascript не обязательно, вы можете использовать Response.Redirect () для страницы aspx. Это должно открыть диалоговое окно сохранения / открытия.