Автор | Сообщение |
|
| постоянный участник
|
Пост N: 4631
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.12.15 20:00. Заголовок: Хранение *.zip файлов в базе ?
Сделал запись zip-файлов в мемо-поля базы (драйвер DBFCDX). Файлы записываются без ошибок, только после извлечения из мемо-поля - архив становиться "битым" и не распаковывается. Как победить это ? Или нужно другую базу использовать ?
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|
|
| |
Пост N: 5445
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.12.15 22:38. Заголовок: Andrey Ну накосячил..
Andrey Ну накосячил видимо.......... Пример сложно было дать ? local a request DBFCDX dbcreate("test",{{"mmm","m",10,0}},"DBFCDX",.t.,"TEMP") TEMP->(dbappend()) a:=filestr("test.zip") TEMP->mmm:=a close all use test alias TEMP new strfile(TEMP->mmm,"test1.zip") close all if hb_md5file("test.zip")==hb_md5file("test1.zip") ? "ok" else ? "bad" endif PS У мну выдало OK ZIP я считывал реальный.
|
|
|
|
| постоянный участник
|
Пост N: 4632
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.12.15 01:54. Заголовок: Dima пишет: Пример ..
Dima пишет: цитата: | Пример сложно было дать ? |
| Дя я не знал.... Выкладываю целиком его на МиниГуи. https://cloud.mail.ru/public/8MDq/upmSqF2xn У меня база открывается так: USE .... CODEPAGE "RU866" VIA "DBFCDX" NEW EXCLUSIVE MD5 проверяю до загрузки в базу и после записи. У меня не совпадает. Что-то наверно обрезается при записи. Может с этим связано ?
|
|
|
|
| |
Пост N: 5446
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.15 10:07. Заголовок: Попробовал и с RU866..
Попробовал и с RU866 и заюзал те же функции как у тебя Вместо filestr -> HB_MEMOREAD Вместо strfile -> HB_MemoWrit Результат тот же , все OK Я бы на твоем месте затестил это дело на простом примере типа моего и после того как будет достигнут положительный результат , портировал в Minigui.
|
|
|
|
| постоянный участник
|
Пост N: 4634
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.12.15 17:53. Заголовок: Dima пишет: Я бы на..
Dima пишет: цитата: | Я бы на твоем месте затестил это дело на простом примере типа моего и после того как будет достигнут положительный результат , портировал в Minigui. |
| Подозреваю разное использование функций в Zip (у тебя Харбор, а у меня в МиниГуи другая библиотека используется). А почему мой пример не идёт ? Где косяк ?
|
|
|
|
| |
Пост N: 5450
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.15 17:58. Заголовок: Андрей а при чем тут..
Андрей а при чем тут функции ZIP вообще ? В моем примере их нет совсем.
|
|
|
|
| постоянный участник
|
Пост N: 4636
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.12.15 18:04. Заголовок: Dima пишет: Андрей ..
Dima пишет: цитата: | Андрей а при чем тут функции ZIP вообще ? В моем примере их нет совсем. |
| Может и не причём...
|
|
|
|
| |
Пост N: 5451
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.15 18:05. Заголовок: возьми мой пример и ..
возьми мой пример и подсунь ему свой ZIP и глянь результат. в конце примера только добавь Ferase("test1.zip") PS Кстати ,если сложишь куда ни будь свой ZIP на котором не сходится MD5 , я проверил бы у себя.
|
|
|
|
| постоянный участник
|
Пост N: 4637
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.12.15 19:06. Заголовок: Dima пишет: Кстати ..
Dima пишет: цитата: | Кстати ,если сложишь куда ни будь свой ZIP на котором не сходится MD5 , я проверил бы у себя. |
| Запусти мой проект - у тебя получиться тоже самое что и у меня. Битые zip из текстовых файлов. Там проект короткий и простой, все файлы из папки FR3 архивируются в zip и далее пишутся в мемо-поле. Потом из мемо-поля пишу в файл (он уже становится битым) и пытаюсь разархивировать. Просто у тебя один файл, а я делаю несколько файлов. Я забыл уже, а как работать с базой где BLOB поля можно использовать ? Подскажи пожалуйста ссылку.
|
|
|
|
| |
Пост N: 5452
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.15 23:36. Заголовок: Andrey пишет: Я заб..
Andrey пишет: цитата: | Я забыл уже, а как работать с базой где BLOB поля можно использовать ? Подскажи пожалуйста ссылку. |
| Поиск по форуму по слову BLOB. Далее "фильтруй" то что нашел.
|
|
|
|
| Администратор
|
Пост N: 3397
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.12.15 08:18. Заголовок: В примере устанавлив..
В примере устанавливается кодовая страница 1251, а dbf открывается с 866-й. При этом в операциях с dbf выполняется перекодировка по кодовым страницам Надо заменить тип поля с memo AADD( aDbf , {"FMEMO" ,"M", 10,0 } ) на BLOB: AADD( aDbf , {"FMEMO" ,"W", 4,0 } ) и тогда перекодировка выполняться не будет. Другой вариант - открывать dbf без указания codepage
|
|
|
|
| постоянный участник
|
Пост N: 4639
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.12.15 13:57. Заголовок: Спасибо БОЛЬШОЕ Pash..
Спасибо БОЛЬШОЕ Pasha !
|
|
|
|
|
| постоянный участник
|
Пост N: 4642
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.01.16 19:47. Заголовок: Нашёл ещё один вариа..
Нашёл ещё один вариант. Делаю сжатие строки и конвертирую строку MIME, а потом записываю в мемо-поле: cBuff := HB_MemoRead(cFile) cPackBuff := ZipCompress( cBuff ) // изпользую HB_Compress(cBuff) из xHarbour Language Reference Guide // ---- для любителей всё шифровать ---- //cPackBuff := HB_Crypt( cPackBuff, "Мой_пароль" ) cBuff64 := HB_Base64Encode( cPackBuff, LEN(cPackBuff) ) FIELD->FMEMO := cBuff64 Обратные действия: cBuff64 := FIELD->FMEMO cPackBuff := HB_Base64Decode( cBuff64 ) cBuff := ZipUncompress( cPackBuff ) // изпользую HB_Uncompress() из xHarbour Language Reference Guide // ---- для любителей всё шифровать ---- // cBuff := HB_DeCrypt( cBuff, "Мой_пароль" ) HB_MemoWrit( PATH_TEST + cFile, cBuff ) Так как строки пакуются, база меньше раза в 1.5 - 2 ! Пробовал ехе-ник на 17Мб - тоже хорошо пишется в/из базы. Можно теперь хранить любые данные в базах и для LetoDB ! Выкладываю исходник - https://cloud.mail.ru/public/Cp97/yM2KA9ba3 Используются функции: MsgLog(), DirEval(), ZipCompress(), ZipUncompress(), HB_Base64Encode(), HB_Base64Decode()
|
|
|
|
| постоянный участник
|
Пост N: 4644
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.01.16 21:05. Заголовок: Вопрос по базе созре..
Вопрос по базе созрел. Стоит ли создавать индексный файл для базы примерно в 100 - 150 записей ? Нужен только поиск по базе типа: LOCATE FOR UPPER(FIELD->FNAME) == PADR("TEST.TXT",65)
|
|
|
|
| постоянный участник
|
Пост N: 7549
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.09.23 22:00. Заголовок: Пытаюсь иконки и bmp..
Пытаюсь иконки и bmp превратить в текстовые данные для помещения в коде программы. Делаю как раньше cFile := "res\Hmg_2dbf64.ico" cBuff := HB_MemoRead(cFile) cRes := hb_Base64Encode( cBuff, Len( cBuff ) ) ? cFile ? 'cBuff := "' + cRes + '"' или так cFile := ChangeFileExt( cFile, '.txt' ) HB_MemoWrit( cFile, cRes ) Получаю в переменной cRes возврат каретки (знак CRLF) и строка cRes не в одной строке. Почему ? Сделал на сайте https://www.base64encode.net/file-to-base64 Переменная без CRLF В хХарборе есть функции HB_Base64DecodeFile() и HB_Base64EncodeFile() А в Харборе как они называются ?
|
|
|
|
| постоянный участник
|
Пост N: 7550
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.09.23 01:57. Заголовок: С первым вопросом пр..
С первым вопросом проехали, разобрался. Вместо cRes := hb_Base64Encode( cBuff, Len( cBuff ) ) надо cRes := hb_Base64Encode( cBuff ) Тогда не будет возврата каретки (знак CRLF) в строке.
|
|
|
|
| постоянный участник
|
Пост N: 1666
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.09.23 09:33. Заголовок: Andrey пишет: Пытаю..
Andrey пишет: цитата: | Пытаюсь иконки и bmp превратить в текстовые данные для помещения в коде программы. Делаю как раньше cFile := "res\Hmg_2dbf64.ico" cBuff := HB_MemoRead(cFile) |
| А почему hb_memoread? Она ж вроде для текстовых файлов предназначена, не? Иконки и бмп - не текстовые.
|
|
|
|
| |
Пост N: 7807
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.09.23 11:38. Заголовок: PSP пишет: А почему..
PSP пишет: Тоже использую её для PNG файлов ->hb_Base64Encode с последующей передачей через socket , проблем не было
|
|
|
|
| постоянный участник
|
Пост N: 1667
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.09.23 13:20. Заголовок: Dima пишет: Тоже ис..
Dima пишет: цитата: | Тоже использую её для PNG файлов ->hb_Base64Encode с последующей передачей через socket , проблем не было |
| Ну, х.з.)
|
|
|
|
| |
Пост N: 7808
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.09.23 13:30. Заголовок: PSP пишет: Ну, х.з...
PSP пишет: ну я тоже так думал как ты и поэтому сделал тестик типа hb_memowrit( "test2.png",HB_MemoRead( "test.png" ) ) всё путем ни один байт не пострадал ))
|
|
|
|
| постоянный участник
|
Пост N: 1668
Зарегистрирован: 27.01.07
|
|
Отправлено: 16.09.23 13:39. Заголовок: Ладно-ладно, я ж не ..
Ладно-ладно, я ж не спорю
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|