Вот установка:
1 веб-сервер, запускающий приложение C#, в котором мои пользователи (сохраненный в базе данных MySQL по упомянутому серверу) аутентифицируют.
1 файловый сервер под управлением программное обеспечение TBD. В прошлом я использовал lighttpd и mod_secdownload для обеспечения файлов на файловых серверах, и это работало хорошо (выход).
Я задаюсь вопросом, существует ли способ сделать это использование комбинации IIS и .NET C#. Все мои другие серверы выполняют ту комбинацию, и она упростила бы вещи немного, если я мог бы сделать то же для файловых серверов. Строка над заголовком, файлы, которые размещаются, являются большими. Я видел примеры людей, использующих небольшое приложение для создания объекта FileStream, читаю в файле и создаю Ответ HTTP вручную. Это работает, но так как я работаю с файлами 500 + МБ в размере, это медленно как heck. И у меня потенциально будет 300 пользователей, поражающих поле сразу, запрашивая файлы. Это бесполезно.
Так, кто-либо видит путь вокруг этого? Я пытаюсь создать более прозрачную систему, и если все мои серверы запустят то же программное обеспечение/аппаратные средства, то это сделает мою жизнь намного более простой. Заранее спасибо за любой совет Вы даете!
Знаешь что? Статья KB - это какашки. Вот моя официальная рекомендация:
public void StreamFile(string filePath)
{
string fileName = Path.GetFileName(filePath);
using (var fStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var contentLength = fStream.Length;
if (Request.UserAgent.Contains("MSIE"))
{
Response.AddHeader("Content-Transfer-Encoding", "binary");
}
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Length", contentLength.ToString());
// Even though "Content-Disposition" should have an upper-case "d", as per http://www.ietf.org/rfc/rfc2183.txt
// IE fails to recognize this if the "d" is upper-cased.
Response.AddHeader("Content-disposition", "attachment; filename=" + fileName);
var buffer = new byte[8192];
while (Response.IsClientConnected)
{
var count = fStream.Read(buffer, 0, buffer.Length);
if (count == 0)
{
break;
}
Response.OutputStream.Write(buffer, 0, count);
Response.Flush();
}
}
Response.Close();
}
В то время как это не применимо напрямую, поскольку вы используете MySQL, но это что-то рассмотреть (может даже быть доступно бесплатно с помощью SQL Server 2008 Express). SQL Server 2008 предлагает поддержку FileStream, которая позволяет вам получать доступ к файлам, как если бы они напрямую хранятся в базе данных, но на самом деле находятся на файловом файловом устройстве. Тогда информация о других постах может помочь вам получить его пользователю.
Эта нить имеет мое решение для хранения использования памяти, пока пользователи загружают файлы. Вы, вероятно, хотите более крупный буфер, чем мой образец использует, хотя.
Попробуйте вызвать новый ActiveXObject:
function testForActiveX(){
tester = null;
try {
tester = new ActiveXObject('htmlfile');
}
catch (e) {
// catch the exception
}
if (tester) {
// ActiveX is installed
return true;
}
return false;
}
-121--1742766- Команда для помещения выделенного фрагмента в буфер обмена оконной системы - x-select-text
. Вы можете дать ему блок текста, чтобы запомнить. Так что (буфер-подстрока (точка) (метка))
или что-то должно дать вам то, что вам нужно передать в него. В ответе Джо вы можете увидеть функцию межпрограммного разреза. Посмотри, как это найти.
Вас может заинтересовать фоновая интеллектуальная служба передачи данных (BITS) корпорации Майкрософт.
http://msdn.microsoft.com/en-us/library/bb968799%28VS.85%29.aspx
Версия 2,5 ввела проверку подлинности HTTP через сертификаты.