Response.ContentType = contentType;
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
Response.BinaryWrite(fileContent);
И
<asp:LinkButton OnClientClick="openInNewTab();" OnClick="CodeBehindMethod".../>
В javaScript:
<script type="text/javascript">
function openInNewTab() {
window.document.forms[0].target = '_blank';
setTimeout(function () { window.document.forms[0].target = ''; }, 0);
}
</script>
Позаботьтесь о сбросе цели, в противном случае все остальные вызовы, такие как Response.Redirect
, откроются на новой вкладке , что может быть не то, что вы хотите.
Да, я бы проголосовал за КОПИРОВАНИЕ, при условии, что вы можете записать файл на жесткий диск сервера (а не на диск, на котором запущено приложение), поскольку КОПИРОВАНИЕ будет считываться только с сервера.
(Больше для полноты информации на самом деле)
Я задал парню безопасности .Net этот вопрос на конференции некоторое время назад. Его ответ состоял в том, что это технически возможно, но он никогда не видел, чтобы это было сделано (и сообщить ему, если я это сделал и это сработало!).
Он предположил, что это можно сделать, создав собственный фильтр ISAPI и установив его в IIS. Фильтр ISAPI перехватит запросы и в основном выполнит задание, выполняемое IIS при использовании интегрированной аутентификации, но вернется к использованию форм, если этого не было. Это включало некоторую сложную логику вызова/ответа в фильтре. Это было для IIS6, так что может быть иначе в IIS7.
Хотя это может быть технически возможно, я бы не предложил этот маршрут , так как это кажется немного взломом, и катание собственной безопасности никогда не является действительно хорошей идеей (если только вы действительно не знаете, что вы делаете).
-121--1078663-Рекурсивные функции упрощают кодирование решений, имеющих отношение повторения .
Например, факториальная функция имеет отношение повторения:
factorial(0) = 1
factorial(n) = n * factorial(n-1)
Ниже я реализовал факториал с использованием рекурсии и закольцовывания.
Рекурсивная версия и отношение повторения, определенные выше, похожи и являются следовательно, легче читать.
Рекурсивный:
double factorial ( int n )
{
return ( n ? n * factorial ( n-1 ) : 1 );
}
Закольцовывание:
double factorial ( int n )
{
double result = 1;
while ( n > 1 )
{
result = result * n;
n--;
}
return result;
}
Еще одна вещь:
Рекурсивная версия факториала включает в себя хвостовой вызов и может быть оптимизирована для хвостового вызова. Это приводит пространственную сложность рекурсивного факториала к пространственной сложности итеративного факториала.
-121--4554022-Существует новое руководство psycopg2 , содержащее примеры для всех опций.
Наиболее эффективной является опция COPY . Затем executemany. Затем выполнить с pyformat.
Также можно использовать clojure.lang.RT/baseLoader
(defn serve-public-resource [path]
(.getResourceAsStream (clojure.lang.RT/baseLoader) (str "public/" path)))
-121--1379898- Можно использовать опцию «git push» с параметром «force»
git push -f
через manpages:
-121--4378637--f, --force Обычно команда отказывается обновить удаленную ссылку, которая не является предком локальной ссылки используется для перезаписи. Этот флаг отключает проверку. Это может привести к тому, что удаленный репозиторий потерять обязательства; используйте его с осторожностью.
Первый и второй используются вместе, а не отдельно. Третий вариант будет наиболее эффективным с точки зрения сервера, поскольку сервер будет выполнять всю тяжелую работу.