Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2009 15:59:21

Bdfy1
От:
Зарегистрирован: 2009-11-03
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

django выдача бинарных файлов

Есть бинарный файл ( картинка ) в БД PostgreSQL ( BYTEA ).
соотв с помошью psycopg2 ( т к встроенная ORM не поддерживает бинарные поля ) берется
cursor = connection.cursor()
cursor.execute(“SELECT file from table where id = 1” );
row = cursor.fetchone();
В row находится сей бинарник - т е нужно чтобы при ссылке на это ( image/show?id=1 ) выдавалась картинка.
Как его вывести через HttpResponse ?

Еще желательно определить mimetype - как я понимаю это должно делаться через python magic ?



Отредактировано (Ноя. 3, 2009 16:00:37)

Офлайн

#2 Ноя. 3, 2009 22:06:57

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

django выдача бинарных файлов

http://docs.djangoproject.com/en/dev/ref/request-response/#passing-strings

...
response = HttpResponse(data, mimetype='image/jpeg')
return response

Офлайн

#3 Ноя. 6, 2009 17:51:18

Bdfy1
От:
Зарегистрирован: 2009-11-03
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

django выдача бинарных файлов

Гм действительно надо было указать правильный mimetype.

А вот еще один вопрос: Нужно файл засунуть в БД ( т к django не поддерживает сие приходится делать через psycopg2 ).

from django.db import transaction
from django.db import connection
import psycopg2 as ps2
Вот если так написать:
sql = "UPDATE  шmages  set file = %s WHERE id = " + str(id);
cursor = connection.cursor()
cursor.execute(sql % ps2.Binary('test'));
То запись в БД вставляется.
А как теперь сюда подсунуть файл который передается через форму ?

попробывал сделать так ( соглас примерам ):
buffer = handle_uploaded_file(request.FILES['file']);

def handle_uploaded_file(f):
import StringIO
buffer = StringIO.StringIO();
for chunk in f.chunks():
buffer.write(chunk);
buffer.close();
return buffer;

cursor.execute(sql % ps2.Binary(buffer.read()));
Не получается - видимо где то ошибка ?



Офлайн

#4 Ноя. 6, 2009 18:59:36

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

django выдача бинарных файлов

Bdfy1
Не получается - видимо где то ошибка ?
Что значит “не получается”?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version