Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Специалисты по дотнету подскажите: Нужно прочитать файл в поток и потом выплюнуть его в Response. На ASP это занимает 5 строчек, как сделать на .Net? var strm = new ActiveXObject("ADODB.Stream"); strm.Type = 1; strm.Open(); strm.LoadFromFile("Path"); try { if (smm.test(thisFKCB)) Response.ContentType="text/SMM;charset=windows-1251"; else Response.ContentType="application/msword"; Response.AddHeader("Content-Disposition", "attachment; filename="+thisFKCB); Response.BinaryWrite(strm.Read()); } catch(e) { throw e; } finally { strm.Close(); } Что использовать FileStream BinaryReader или что-то другое? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 16:47 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
Для простых случаев есть метод Response.WriteFile но это не всегда подходит смотрите с примерами здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:02 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
можно в одну :) Response.WriteFile(string filename) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:05 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
о, не успел ... согласен, не всегда, но Response.BinaryWrite(strm.Read()); тут и есть то же самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:09 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
Этот способ подойдет только если файлы не большие а если например мегабайта 3 или больше и запрашивают их по нескольку раз в секунду то будет грустно ну а если 100Mb тогда весьма грустно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:14 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
есть мнение, что в таких условиях любым способом будет грустно -- чем дальше в лес, тем больше нас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:22 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
То есть если я правильно понял, то надо писать что-то на подобии? System.IO.Stream iStream = null; // Buffer to read 10K bytes in chunk: byte[] buffer = new Byte[10000]; // Length of the file: int length; // Total bytes to read: long dataToRead; // Identify the file to download including its path. string filepath = "DownloadFileName"; // Identify the file name. string filename = System.IO.Path.GetFileName(filepath); try { // Open the file. iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read); // Total bytes to read: dataToRead = iStream.Length; Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); // Read the bytes. while (dataToRead > 0) { // Verify that the client is connected. if (Response.IsClientConnected) { // Read the data in buffer. length = iStream.Read(buffer, 0, 10000); // Write the data to the current output stream. Response.OutputStream.Write(buffer, 0, length); // Flush the data to the HTML output. Response.Flush(); buffer= new Byte[10000]; dataToRead = dataToRead - length; } else { //prevent infinite loop if user disconnects dataToRead = -1; } } } catch (Exception ex) { // Trap the error, if any. Response.Write("Error : " + ex.Message); } finally { if (iStream != null) { //Close the file. iStream.Close(); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:45 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
Только странно, если этот пример предназначен для работы с большими файлами, то почему они задают массив в 10 KB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2004, 17:46 |
|
||
|
Работа с файлами
|
|||
|---|---|---|---|
|
#18+
А что собственно странного? Может они решили, что для этого случая оптимальным будет такой размер. Стандартным размером буфера вроде бы принято считать 4096. Я для больших файлов примерно в таком коде использую буфер размером 64k ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2004, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=32635563&tid=1395350]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 369ms |

| 0 / 0 |
