Потеря одно байта при чтении через GetChunk

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Потеря одно байта при чтении через GetChunk

Сообщение ALX_2002 » 10.03.2006 (Пт) 16:47

Доброго времени суток господа и дамы. 8) И снова я к вам с неожиданными вопросами.

Полазил по форуму в поисках ответа и даже гугля напряг и тындекс, но всё равно ответа не нашёл. :(

У меня в базу пишутся файлы через AppendChunk. и обратно читаю их чреез GetChunk.

И большинство файлов работает нормально ( в том числе EXE ), а вот одна GIF-ка теряет один байт при чтении обратно. При чём байт помоему последний. Т.е по логике какой то там символ теряется. Может символ конца файла ? Нашёл смутные намёки на то, что дело в кодировке Windows-1251. Но как бороться нигде не написано :(

Если потребуется, приведу код. Просто возможно вы уже сталкивались с этим и сразу меня пошлёте пить ЙАДУ, и тогда не придётся мне пугать вас своим кодом. :D

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.03.2006 (Пт) 17:09

Код в студию :!:
Лучший способ понять что-то самому — объяснить это другому.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.03.2006 (Пт) 17:24

Код: Выделить всё
Option Base
- ?

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.03.2006 (Пт) 18:57

2 Ennor: Ммм.... :( :?:

2 Antonariy: Сначала хотел выложить часть кода, но т.к у меня большая часть кода разложена в другие ASP-ки, то решил, что лучше пришлю все. Всего их там 5.

connect.asp - содержит функции подключения к базе
default.asp - выводит список загруженных файлов
Upload.asp - загружает файлы в базу
Uploader.asp - содержит слегка доработаный класс загрузки файла. Взял с http://www.freeaspupload.net
Download.asp - скачка файла из базы.
У вас нет доступа для просмотра вложений в этом сообщении.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 10.03.2006 (Пт) 19:28

Да, забыл ! А вот ещё и сама GIF-ка, которая ну никак не хочет нормально скачаться :shock:

Изображение

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 11.03.2006 (Сб) 1:27

Чую я не судьба мне узнать, где мои кривые лапы напортачили. :D . Опять я с дуру произнёс кодовое слово - A S P

:D Значит теперь:

1) Большинство наверное даже код смореть не станут. :(
2) Придут админы и потребуют справедливости ! Скажут ! Не в ту тему пишешь ! УХ ! И перекинут или в ASP или в Базы Данных

Эх.... Жизнь жестокая вещь... :roll:

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.03.2006 (Вс) 13:10

И снова доброго вам дня челы.

Я приблизительно разобрался в чём проблема. У меня в базу при записи файла через AppendChunk записывается только чётное колличество байт.

Т.е если файл длиной 57 байт, то записывается 56.

Я не совсемм понимаю почему так.

Сейчас изголяюсь. Пишу в базу файл на байт больше. Т.е если 57 байт, по пишу 58, а потом при чтении делаю GetChunk на байт меньше

ИМХО ! ! КРИВ ЖУТКО !!!

Объясните плиз. В чём тут дело.

В голове летает мысль о представлении символа в виде двухбайтов.

Вообщем прошу помощи.. HEEEELP PLEEASEE :cry:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.03.2006 (Вс) 13:17

Код покажи.
Наверное используешь строковый буфер, а не байтовый массив?
Lasciate ogni speranza, voi ch'entrate.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.03.2006 (Вс) 13:38

Ага. Признаюсь. Т.к делаю в ASP, то приходится юзать переменные типа Varinat, предполагаю, что при скидывании в них данных это и есть строковй буффер :roll:

А как бы сделать так, чтобы преобразовать это дело в байт массив, а потом записать ? :oops:

Я там сверху выложил весь набор кода :roll:

А вот кусочек из него

Код: Выделить всё
   oUploadFile.Content = MidB(VarArrayBinRequest,nCurPos,oUploadFile.Length) '& Byte2String(vbNull)  '& Byte2String(vbNull)


А потом делаю
Код: Выделить всё
Recordset.AppendChunk(oUploadFile.Content)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.03.2006 (Вс) 13:59

А в ASP нет возможности сделать Dim buff() As Byte?
И почему ты юзаешь MidB?
Lasciate ogni speranza, voi ch'entrate.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 12.03.2006 (Вс) 14:30

2 alibek: Вот в том то вся и засада.... :(

Там Dim A as .. вообще никак нельзя. Только Dim A или Dim A()

Вообщем лажа выходит. :(

А MidB использую, чтобы резать строку не по символам, а по байтам :roll: ( вроде как бы)



[/b]

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.03.2006 (Пн) 10:22

Советую загнать uploader.asp в dll и пошагово его отдебагить.
Лучший способ понять что-то самому — объяснить это другому.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 13.03.2006 (Пн) 15:54

2 Antonariy: Дык, я уже вроде въехал в чём дело.

Оказывается когда я подсовываю методу AppendChunk не BYTE массив, а переменную типа Variant, то он начинает считать, что она вообще STRING :shock: :shock: :shock: и потому решает, что там должно быть чётное количество байт. Типа, что каждый символ должен быть по 2 байта.

Ну короче или я туплю или так оно и есть, но приходится записывать на в базу на байт больше, а потом на байт меньше отдавать....

:(

Потому как в ASP я не имею возможности УДОБНО конвертнуть строку в байт массив или даже просто создать там байт массив. :(


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList  
cron