|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Не могу решить проблему, хотя сам понимаю, что решение ее простое, но какое незнаю. Есть у меня база данных, а вернее таблица в ней, котороя хранит в себе картинки. DROP TABLE IF EXISTS `MyImage`; CREATE TABLE `MyImage` ( `ID` bigint(20) unsigned zerofill NOT NULL auto_increment, `SelfImage` longblob NOT NULL, PRIMARY KEY (`ID`) ) TYPE=MyISAM COMMENT='MyImage'; При помощи скрипта на PERL , из файла в нее записывается картинка, в поле `SelfImage`, в этом аопросов нет. Но мне надо ее вывести потом клиенту, а как это сделать ? Делаю запрос вида : SELECT * FROM `MyImage` WHERE `ID`= 00000000000000000001 ; При этом я получаю ID, SelfImage, далее `SelfImage` я перевожу в строку, и после этого вывожу ее клиенту через print, ожидая, что в IE отобразится картинка, но вместо картинки билеберда в виде текста, а не картинки.... Помогите, пожалусто, как все таки правильно выводить картинки ? Если у когото есть малюсенький скрипт, буду поистине Вам благодарен, если Вы его предоставите в качестве поучительного примера..... С тем самым прикладываю таблицу, в zip архиве, ее достаточно скопировать в ./data/test/ Заранее благодарю. ----------------------------------------------------------- С уважением,MySQLdb ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 09:45 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
MySQLdbвывожу ее клиенту через print, ожидая, что в IE отобразится картинка, но вместо картинки билеберда в виде текста, а не картинки....потому что хидеры, судя по всему, не выводишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 10:21 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Код: plaintext
А какие именно надо, может есть примерчик работоспособный ? ----------------------------------------------------------- С уважением,MySQLdb ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 10:28 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Content-Type: image/jpeg Если хочешь поберечь клиента и допускаешь кэширование рисунков на его стороне, так же полезным будет при запросе анализировать хидеры If-Modified-Since и If-None-Match (если совпало - возвращаешь HTTP/1.0 304 Not Modified и картинку клиенту не отдаёшь) и формировать хидеры Last-Modified и ETag Примера на perl'е дать не могу - вспоминать слишком долго - с некоторых пор предпочитаю PHP ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 10:39 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Да, внутри картинки формата jpg ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2004, 14:06 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Вот код, который я использую: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 08:47 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
MySQLdb закомментируй в скрипте строку с хедером : #print("Content-type: image/jpeg\n\n"); или поменяй на text/html и посмотри что выводится в броузер ЗЫ в броузере набирай не тот URL где у тебя HTML c <img src="путь к твоему скрипту"> а именно вводи URL этого скрипта ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 13:56 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
в строке адреса пишу http://localhost/cgi-bin/image.pl в скрипте заменил #print("Content-type: image/jpeg\n\n"); print("Content-type: text/html\n\n"); вроде появляется квадратик, типа картинки, но это не картинка, а тот квадратик, с крестиком, который появляется когда в броузере отключены картинки, на самом деле у меня они включены..... внутри выводится три буквы Content-type: text/html ÿØÿá ----------------------------------------------------------- С уважением,MySQLdb ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 14:39 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
а каким редактором ты смотришь, когда он тебе 3 буквы показывает ? Похоже он сам их интерпретирует как unicode или что-то вроде этого. Ты уверен что у тебя картинка в $row[1] ? попробуй $row[1] записать в файл и посмотри, картинка ли это ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 16:54 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
автора каким редактором ты смотришь, когда он тебе 3 буквы показывает ? Похоже он сам их интерпретирует как unicode или что-то вроде этого. Ты уверен что у тебя картинка в $row[1] ? попробуй $row[1] записать в файл и посмотри, картинка ли это ? смотрю из под Perl Builder, а если кликнуть в окне IE, как HTML исходник, то там лежит типа "ящяа". Переменная $row[1] содержит в себе после запроса "ÿØÿá", это попадает в файл, и в окно браузера, типа поле не полностью зачиталось в массив, а только его кусочек. Возьми базу, попробуй сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 17:22 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
MySQLdbесли кликнуть в окне IE, как HTML исходник, то там лежит типа "ящяа".Может всё же "ящяб"? ;) Это и есть начало твоего jpg-файла, если у тебя всё же "ящяа" - ищи костыли при доставании данных из БД, потому что твой JPEG начинается именно с 0xFF 0xD8 (маркер SOI - Start Of Image) 0xFF 0xE1 (маркер APP1 - начало EXIF-данных) ну и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2004, 17:49 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
авторМожет всё же "ящяб"? ;) Это и есть начало твоего jpg-файла, если у тебя всё же "ящяа" - ищи костыли при доставании данных из БД, потому что твой JPEG начинается именно с 0xFF 0xD8 (маркер SOI - Start Of Image) 0xFF 0xE1 (маркер APP1 - начало EXIF-данных) ну и т.д. Да, именно так, "ящяб", описался. Я уже начинаю подозревать, что при запросе из поля BLOB данные не считываются полностью, а как их считаь полностью, незнаю. Или этому может быть есть кокое-то объяснение, или в самом DBD/DBI есть какоето ограничение? Тогда возможно ли вообще как либо вывести картинку из базы, или ее только можно туда поместить, и забыть про нее навсегда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2004, 10:23 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Попробуй всё же поступить так, как сказал Макс М. - запиши переменную в файл, посмотри его содержимое просмотрщиком. Подозреваю, что ты просто ловишь воздух. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2004, 10:29 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
пишу в файл, в двоичном виде, потом открываю в ACDC, просматривается картинка. А вот вывести ее из файла пользователю не получается, в чем ошибка незнаю, выводится только "ящяб", помоготе плиз вывести из файла. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
----------------------------------------------------------- С уважением,MySQLdb ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2004, 14:14 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
MySQLdb , до хидера выводить что-то кроме хидеров - не нужно. Картинку нужно выводить после хидера, при чём между картинкой и хидерами не может быть ничего, кроме хидеров. Уберите у себя строку Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2004, 14:58 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
У меня затырка на Код: plaintext 1. 2. 3. 4. 5.
не читается полностью файл, цикл делает только один проход, вот и получается "ящаб". Как правильно организовать цикл ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2004, 15:21 |
|
Вывод картинок в PERL
|
|||
---|---|---|---|
#18+
Вот уж воистину иногда сам себя заводиш в тупик, а тем временем ларчик очень просто открывался, и вот как я решил эту проблему тремя способами: 1) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
2) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
3) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
С тем самым прикладываю исходини PL. ----------------------------------------------------------- С уважением,MySQLdb ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2004, 13:48 |
|
|
start [/forum/topic.php?fid=23&fpage=508&tid=1479625]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
320ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
112ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 771ms |
0 / 0 |