Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вторую неделю бьюсь... Как отдать zip.файл клиенту, если файл находится в таблице на SQL-Servere? Туда он забрасывается FOX-ом в поле [text]. Строка таблицы имеет уникальный ID, название файла, и содержимое в [text]. Как я понимаю, один из вариантов - генерация файла в темповый. Можно ли сформировать файл "на лету" (без темпа)? Если можно (или если нельзя, хотелось бы два варианта), какой нибудь простенький примерчик реализации. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 12:18 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
igankrДобрый день! Вторую неделю бьюсь... Как отдать zip.файл клиенту, если файл находится в таблице на SQL-Servere? Туда он забрасывается FOX-ом в поле [text]. Строка таблицы имеет уникальный ID, название файла, и содержимое в [text]. Как я понимаю, один из вариантов - генерация файла в темповый. Можно ли сформировать файл "на лету" (без темпа)? Если можно (или если нельзя, хотелось бы два варианта), какой нибудь простенький примерчик реализации. Заранее спасибо. ПОМОГИТЕ! Пжлста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 17:46 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
непонятно, он уже зазипованый хранится или еще нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 17:57 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
greenappleнепонятно, он уже зазипованый хранится или еще нет ? Да, он уже заархивирован. Размер от 2 мб до 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 19:03 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
' читаем в zipField Response.Clear() Response.ContentType = "application/octet-stream" Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.Write(zipField) Response.End() Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 20:15 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
ну раз он уже сжатый, Response.BinaryWrite(bytes), где bytes - массив байтов из блоба... Только ContentType нужно поставить соответствующий - "application/x-zip-compressed" Если проблема прочитать из блоба в массив, то вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 20:30 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Response.Write() выведет в данном случае название типа, поэтому все же Response.BinaryWrite. По ContentType: Лучше передавать "application/x-zip-compressed" - это дефаултный маппинг для *.zip, он входит в 26 hard-coded типов IE. application/octet-stream говорит о том, что передается "что-то другое", восьмибитные бинарные данные. Он привязан к куче самых разных расширений, например *.exe или *.rar, поэтому для того чтобы определить MIME тип в случае передачи application/octet-stream, IE в любом случае будет дополнительно проверять первые 256 байт буфера, и найдет что это application/x-zip-compressed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 23:00 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Hratchia ' читаем в zipField Response.Clear() Response.ContentType = "application/octet-stream" Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.Write(zipField) Response.End() Posted via ActualForum NNTP Server 1.2 Размер файла на SQL-Servere - 1399 байт, в сформированном zip-файле 1733 байт. Соответственно, zip-файл не читается. В чем может быть дело? И откуда берутся лишние байты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 11:21 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
greenappleну раз он уже сжатый, Response.BinaryWrite(bytes), где bytes - массив байтов из блоба... Только ContentType нужно поставить соответствующий - "application/x-zip-compressed" Response.Clear() Dim myRow As Data.DataRow myRow = Dspagedata.Tables("Vibor").Rows(0) Dim MyData() As Byte MyData = myRow("textc") Response.ContentType = "application/x-zip-compressed" ' Response.ContentType = "application/octet-stream" - без разницы какой тип Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.BinaryWrite(MyData) Response.End() В этом случае выдает ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 11:41 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Скорее всего тайна кроется в этом месте: Dim myRow As Data.DataRow myRow = Dspagedata.Tables("Vibor").Rows(0) Dim MyData() As Byte MyData = myRow("textc") проверь сходу размер MyData Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 14:41 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
да тайны то нет :) ты внутрь файла заглядывал? что там в конце? думаю HTML страницы, ты выводишь на aspx? если да, то this.Visible = false еще нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 14:50 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
или удалить там все, оставить только <%@ Page ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 14:59 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Hratchia Скорее всего тайна кроется в этом месте: Dim MyData() As Byte MyData = myRow("textc") Вот как раз в этом месте ошибку и дает MyData = myRow("textc"). Колонка textc на SQL-Servere -> "text". Может проблема в этом? Использовал этот тип, потому как Fox со своей стороны отказывался работать по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 16:59 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Response.Clear() Response.ContentType = "application/octet-stream" Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.Write(zipField) Response.End() Размер файла на SQL-Servere - 1399 байт, в сформированном zip-файле 1733 байт. Соответственно, zip-файл не читается. В чем может быть дело? И откуда берутся лишние байты? Самое интересное, что если на SQL забросить обычный текстовый файл, все будет ОК (сохранить как zip, переименовать в тхт, и опля - текст в том виде, как сохранял в таблицу). Скорее всего, в zip-файл в процессе формирования (Response.Write) из таблицы SQL добавляются некоторые символы, которые ДОЛЖНЫ быть в обычном текстовом файле, вот только что сделать, чтобы этого не происходило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 17:46 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
хм, а с SqlDbType.Image Fox Pro случайно не работает? Ты прав, в text забивается и возвращается уже строка, а не байты, потому и ошибка в этом месте. Обратно можно, но байты как-то кодируются в строку перед сохранением и делает это Fox pro, лучше бы уж Image. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 19:12 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
интересно какая кодировка у response ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 19:22 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
greenappleхм, а с SqlDbType.Image Fox Pro случайно не работает? Ты прав, в text забивается и возвращается уже строка, а не байты, потому и ошибка в этом месте. Обратно можно, но байты как-то кодируются в строку перед сохранением и делает это Fox pro, лучше бы уж Image. Fox нормально и сохраняет на SQL и забирает - проверял, все ОК (проверял на zipе). Мне кажется, ASP что то с одержимым делает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 13:45 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
я думаю вот что, когда ты работаешь с Fox он берет zip, кодирует байты в строку в какой-то своей кодировке (1251 ?), берет он их оттуда так же точно. Net поступает со строкой так, как у него забито в культуре или по умолчанию utf-8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. <globalization requestEncoding="windows-1251" responseEncoding="windows-1251" /> выведется 6 12 6 20 38 20 при <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 12 12 6 38 38 20 если добавить Response.ContentEncoding = System.Text.Encoding.UTF8; перед всеми Response.Write то кодировка буфера в web.config изменится на указанную. я думаю дело в этом, потому что в данном случае ты работаешь со строкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 15:03 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
если добавить Response.ContentEncoding = System.Text.Encoding.UTF8; перед всеми Response.Write то кодировка буфера в web.config изменится на указанную. БОЛЬШОЕ СПАСИБО! Готовый РАБОТАЮЩИЙ кусок кода (Asp.Net 2.0) Response.Clear() Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1251") Response.Write(Dspagedata.Tables("Vibor").Rows(0).Item("textc")) Response.End() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:12 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
супер! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:14 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Response.Clear() Response.AppendHeader("Content-Disposition", "Attachment;FileName=myZipFile.zip") Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1251") Response.Write(Dspagedata.Tables("Vibor").Rows(0).Item("textc")) Response.End() Опа... Попробовал разархивировать другой zip-файл- "неожиданный конец архива", т.е. Ошибка. Чего -то туда было дописано, мля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:17 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
Опа... Попробовал разархивировать другой zip-файл- "неожиданный конец архива", т.е. Ошибка. Чего -то туда было дописано, мля Разница с "нормальным" zip - 2 байта... Как я понимаю, нужно "заставить" Fox перенести данные на SQL-Server без кодировки (т.е. UTF8), и, потом на Asp взять его тоже UTF8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:32 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
всегда два байта? м.б. конец строки где-то добавляется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:52 |
|
||
|
Как отдать zip.файл клиенту, если файл в таблице на SQL-Servere?
|
|||
|---|---|---|---|
|
#18+
greenappleвсегда два байта? м.б. конец строки где-то добавляется? Да нет, 2 байта срезается в файле (в теле файла, например всего 12303 б, на 11198 - 2 байта 5C,0A). Причем, если сначала выяснить размер файла df = Len(Dspagedata.Tables("Vibor").Rows(0).Item("textc") - УЖЕ не хватает 2 байтов!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 18:03 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33189324&tid=1393778]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 411ms |

| 0 / 0 |
