Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Фоновая загрузка файлов / 13 сообщений из 13, страница 1 из 1
27.05.2014, 12:21
    #38653042
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Собственно вопрос вот в чем, есть у меня на сайте некоторые файлы разных размеров (от Кб до сотен Мб), которые пользователи могут загружать. Эти файлы лежат в определенном каталоге на диске, скачивающий пользователь не имеет доступа по прямой ссылке на эти файлы, ссылка на файл, для примера, http://mysite.com/download.aspx?f=DrfgtFvseF15Dfv, далее в download.aspx есть код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
FileInfo fi = new FileInfo( Server.MapPath( "~" ) + "\\downloads\\" + fileName );
if (fi != null && fi.Exists)
{
	int BUFF_LENGTH = 10000;
	int length = Convert.ToInt32( fi.Length > BUFF_LENGTH ? BUFF_LENGTH : fi.Length );
	long dataToRead = fi.Length;
	using (FileStream fs = fi.OpenRead())
		try
		{
			Response.BufferOutput = false;
			Response.ContentType = "application/octet-stream";
			Response.AddHeader( "content-disposition", "attachment; filename=" + fileName );
			byte[] fileContent = null;
			while (dataToRead > 0)
				if (Response.IsClientConnected)
				{
					fileContent = new byte[length];

					length = fs.Read( fileContent, 0, BUFF_LENGTH );

					Response.OutputStream.Write( fileContent, 0, fileContent.Length );
					Response.Flush();
					dataToRead -= length;
				}
				else
					dataToRead = -1;
		}
		finally
		{
			Response.Close();
		}
}


Этот код работает как надо и файлы загружаются. Но есть одно НО, если клиент поставил на закачку большой файл, то он не может перемещаться по сайту.
И попутный вопрос, мне нужна реализация именно с буфером, так как у меня сейчас, не хотелось бы загружать в память по 800Мб каждым клиентом - это не вариант, при такой реализации на клиентской стороне не показывается прогресс (постоянно 0%) и размер загружаемого файла, это как то можно передавать, может в хеадерах или еще как?
...
Рейтинг: 0 / 0
27.05.2014, 12:28
    #38653055
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
HttpResponse.TransmitFile()
...
Рейтинг: 0 / 0
27.05.2014, 13:31
    #38653204
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
НахлобучHttpResponse.TransmitFile()
Нашел на одну буржуйскую статейку как использовать HttpResponse.TransmitFile(), применил, вобщем та же бодяга, файлы скачиваются, а в это время по сайту лазить нельзя, т.к. ждем ответа от сервера.
...
Рейтинг: 0 / 0
27.05.2014, 13:32
    #38653208
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Мне как-то нужно асинхронность применить. А как я не знаю и решений в интернете не нашел, вот сюда и написал.
...
Рейтинг: 0 / 0
27.05.2014, 13:40
    #38653222
Кавказ-сила
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
SanprofМне как-то нужно асинхронность применить http://www.uploadify.com/download/download-uploadifive-standard/
...
Рейтинг: 0 / 0
27.05.2014, 13:47
    #38653241
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Кавказ-силаSanprofМне как-то нужно асинхронность применить http://www.uploadify.com/download/download-uploadifive-standard/
а что нибудь бесплатное?
...
Рейтинг: 0 / 0
27.05.2014, 13:50
    #38653246
Кавказ-сила
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
...
Рейтинг: 0 / 0
27.05.2014, 15:21
    #38653447
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
SanprofНахлобучHttpResponse.TransmitFile()
Нашел на одну буржуйскую статейку как использовать HttpResponse.TransmitFile(), применил, вобщем та же бодяга, файлы скачиваются, а в это время по сайту лазить нельзя, т.к. ждем ответа от сервера.открывай ссылку на загрузку в отдельной вкладке.
...
Рейтинг: 0 / 0
27.05.2014, 16:20
    #38653561
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Кавказ-сила http://www.uploadify.com/download/
вижу только код для загрузки файлов на сервер, а мне надо наоборот.
...
Рейтинг: 0 / 0
27.05.2014, 16:25
    #38653571
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Яростный МечSanprofпропущено...

Нашел на одну буржуйскую статейку как использовать HttpResponse.TransmitFile(), применил, вобщем та же бодяга, файлы скачиваются, а в это время по сайту лазить нельзя, т.к. ждем ответа от сервера.открывай ссылку на загрузку в отдельной вкладке.
хм, это я попробовал сразу же после. получил то же самое, но для конкретной сессии, тоесть в других браузерах (с другими сессиями) я во время закачки свободно перемещаюсь по страницам, блокируется только качающий клиент.
...
Рейтинг: 0 / 0
27.05.2014, 17:44
    #38653723
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Sanprofхм, это я попробовал сразу же после. получил то же самое, но для конкретной сессии, тоесть в других браузерах (с другими сессиями) я во время закачки свободно перемещаюсь по страницам, блокируется только качающий клиент. http://www.olegaxenow.com/2011/11/sessiya-aspnet-i-problema-s.html

сделай отдельный хандлер (а не страницу aspx) для скачивания, помечай интерфейсом IReadOnlySessionState , либо вообще без оного (если сессия не нужна).
тогда, по идее, он не будет блокировать страницы.
...
Рейтинг: 0 / 0
27.05.2014, 17:46
    #38653728
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Яростный МечSanprofхм, это я попробовал сразу же после. получил то же самое, но для конкретной сессии, тоесть в других браузерах (с другими сессиями) я во время закачки свободно перемещаюсь по страницам, блокируется только качающий клиент. http://www.olegaxenow.com/2011/11/sessiya-aspnet-i-problema-s.html

сделай отдельный хандлер (а не страницу aspx) для скачивания, помечай интерфейсом IReadOnlySessionState , либо вообще без оного (если сессия не нужна).
тогда, по идее, он не будет блокировать страницы.
ок, спс, почитаю, завтра отпишусь, а то уже конец рабочего дня.
...
Рейтинг: 0 / 0
28.05.2014, 13:03
    #38654384
Sanprof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фоновая загрузка файлов
Яростный МечSanprofхм, это я попробовал сразу же после. получил то же самое, но для конкретной сессии, тоесть в других браузерах (с другими сессиями) я во время закачки свободно перемещаюсь по страницам, блокируется только качающий клиент. http://www.olegaxenow.com/2011/11/sessiya-aspnet-i-problema-s.html

сделай отдельный хандлер (а не страницу aspx) для скачивания, помечай интерфейсом IReadOnlySessionState , либо вообще без оного (если сессия не нужна).
тогда, по идее, он не будет блокировать страницы.
Яростный Меч , большое спасибо, прочитал статью, применил ReadOnly к странице, которая отвечает за скачку файла, плюс открываю ее в отдельной вкладке, и теперь во время закачки, я могу свободно перемещаться по сайту
Код: c#
1.
<%@ Page Language="C#" EnableSessionState="ReadOnly" %>
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Фоновая загрузка файлов / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]