Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/23: Рейтинг темы: голосов - 23, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
1

Как можно отдать клиенту большой файл ?

26.04.2007, 20:13. Показов 4625. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день !
Сталкивался ли кто с подобной проблемой ?
Необходимо отдавать клиенту файлы больших размеров (сотни мб). Пробовал по-всякому - IIS подвисает наглухо.
С уважением, Сергей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2007, 20:13
Ответы с готовыми решениями:

Как отдать zip.файл клиенту, если файл находится в таблице на SQL-Servere?
Как отдать zip.файл клиенту, если файл находится в таблице на SQL-Servere? Туда он забрасывается...

Можно ли большой (генерируемый) файл отдать на закачку во время генерации?
Здравствуйте. Такую тему не нашел, может плохо искал. Имеем сервер IIS. На C# написан,...

Как отдать файл клиенту напрямую?
Есть файл. Для него известно имя и где лежит. Сейчас для того чтобы вернуть файл клиенту он...

Сформировать файл и отдать клиенту без сохранения на сервере, как реализовать ?
Есть данные которые необходимо записать в файл "txt" и отдать клиенту, при этом файл нельзя...

13
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
28.04.2007, 17:04  [ТС] 2
Уважаемые гуру !
Ну неуж-то никто не сталкивался с подобными траблами ?
С уважением, Сергей.
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
28.04.2007, 18:31 3
По моему подобная тема уже поднималась, но решение никто не предложил.
0
0 / 0 / 0
Регистрация: 19.12.2006
Сообщений: 39
03.05.2007, 15:35 4
Вот подобный вопрос обсуждался.

http://www.relib.com/forums/Topic893054-4-1.aspx

Но с сотнями это круто.
0
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
04.05.2007, 19:26  [ТС] 5
Огромное спасибо. Вопрос решен.
0
0 / 0 / 0
Регистрация: 19.12.2006
Сообщений: 39
05.05.2007, 12:52 6
Пожалуйста.
Встречнй вопрос.. вот тут проблемка возникла, может можешь чето присоветовать.?
http://www.relib.com/forums/Topic912941-4-1.aspx http://www.relib.com/forums/Topic912941-4-1.aspx
Письмо приходит - одни каракули. Чего не так с кодировками не втюхаю.
0
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
05.05.2007, 14:28  [ТС] 7
Блин, поторопился я. Проблема осталась таки непобежденной.
При закачке больших файлов в диспетчере задач файл подгрузки увеличивается на размер скачиваемого файла. Машина начинает жутко тормозить. Помогает только перезапуск ИИС. Люди добрые - прошу помощи у вас.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BLOCK_SIZE = 1024 ' 1 Мб
' Response.Buffer = False
fileName = ("D:\film.avi")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1 ' adTypeBinary
objStream.LoadFromFile(fileName)
If objStream.Size > 0 Then 
 Response.Clear
 Response.ContentType="application/octet-stream"
 Response.AddHeader "Content-disposition","inline;filename=film.avi"
 Do While Not objStream.EOS
  Response.BinaryWrite objStream.Read(BLOCK_SIZE)
  ' Response.Buffer = False
  Response.Flush
 Loop
End If
objStream.Close
Set objStream = Nothing
С уважением, Сергей.
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
06.05.2007, 18:17 8
Поробуй использовать метод Open вместо LoadFromFile:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Const BLOCK_SIZE = 1024*1024 ' 1 Мб
fileName = "D:\film.avi"
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 ' adTypeBinary
objStream.Open fileName, 1 ' Открыть файл на чтение
If objStream.Size > 0 Then
    Response.Buffer = False
    Response.Clear
    Response.ContentType = "application/octet-stream"
    Response.AddHeader "Content-disposition","attachment;filename=film.avi"
    Do While Not objStream.EOS
        Response.BinaryWrite objStream.Read(BLOCK_SIZE)
        Response.Flush
    Loop
End If
objStream.Close
Set objStream = Nothing
0
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
08.05.2007, 04:26  [ТС] 9
Работает пока только вот так.
При загрузке фильма 700 мб сек на 20 браузер задумывается. Файл подкачки за это время увеличивается на кол-во мб. Затем вываливается окно "Открыть, сохранить". Если мой Download Master стоит, как "Включить интеграцию в браузер", после нажатия "Сохранить" ничего не происходит. В браузере написано - "Действие отменено". Если DM не интегрирован, то начинается закачка и почему-то скачивается только 1 мб.
Должно быть какое-то решение. И оно где-то рядом. С сайта Микрософта ведь как-то качаются всякие там СП и прочее по несколько сотен мегов. И ничего ... И ссылок прямых они не дают. Кстати, а только таким способом можно решить проблему с скрытием прямых ссылок на файл ? Т.е я хочу отдавать клиенту файл, только чтобы он не видел прямой ссылки. Чтобы не мог ее любой в Инете набрать и скачать.
С уважением, Сергей.
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.05.2007, 17:21 10
Ты вариант без LoadFromFile попробовал или нет?
Возможно что компонент ADODB.Stream просто не подходит для работы с большими файлами и значит надо использовать другой компонент. Мне известен только еще один COM объект для работы с двоичными файлами - SoftArtisans.FileManager. К сожалению они убрали его со своего сайта, но у меня осталась их dll-ка. Если хочешь могу выслать, попробуешь его.
0
0 / 0 / 1
Регистрация: 04.05.2010
Сообщений: 116
25.05.2007, 22:19 11
да, действительно какая-то гадость, какого хрена ADODB.Stream Сразу грузит весь файл в себя. ужос.
наверное легче написать/взять длл-ку, которая имееет метод читающий файл кусками, но ее-ж еще в системе зарегить надо, а ежели провайдер не захочет что тогда?
0
0 / 0 / 1
Регистрация: 04.05.2010
Сообщений: 116
25.05.2007, 22:21 12
тфу, зарапортавался, хостер!
0
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
27.06.2007, 16:50  [ТС] 13
Где б еще взять такую длл-ку ?
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
28.06.2007, 14:56 14
У меня есть старая версия SoftArtisans File Manager. Она умеет работать с файлами на уровне байтов. Не знаю насколько хорошо этот компонент работает с большими файлами, но по крайней мере можно попробовать. В наличии также документация и примеры. Если интересно, то скажи свой e-mail и я тебе вышлю архив.
0
28.06.2007, 14:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2007, 14:56
Помогаю со студенческими работами здесь

Как передать большой объем данных клиенту
Есть хостинг с поддержкой PHP, Perl 5, Parser, Python, Ruby, C++ Суть такая: на компьютере юзера...

ActiveX. Как можно дать клиенту выбрать дату
Как можно дать клиенту выбрать дату?

Как передать файл от сервера клиенту?
Нужно организовать передачу файлов на основе TCP/IP. Как передать файл от сервера на клиент? Есть...

Как загрузить файл клиенту через JQ
Есть ajax $.post("testkornilov.php", {date: 'more', fromdate: fromdate, todate: todate},...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru