Chcę przechowywać obrazy mojej witryny w bazie danych Kasandra! Muszę czytać i przechowywać bajty obrazu. Czy masz dla mnie fajny kod? Używam Pythona2.7, framework django i silnika cql!Jak zapisać obraz jako pole bajtów w bazie danych Kasandra za pomocą silnika cql?
To jest mój kod:
1- Mój Model:
from cqlengine import columns
from cqlengine.models import Model
class UserImage(Model):
Email = columns.Text(primary_key=True)
image=columns.Bytes(required=False)
2- moja forma:
class UserImage(forms.Form):
image=forms.ImageField()
3- moim zdaniem:
from MainAPP.models import UserImage as UserImageModel
from MainAPP.forms import UsersForms
from django.http import HttpResponse
from cqlengine import connection
from PIL import Image
def UploadImage(request):
if request.method == 'POST':
form = UsersForms.UserImage(request.POST, request.FILES)
if form.is_valid():
try:
image_data=Image.open(request.FILES['image'])
except IOError:
return HttpResponse("cannot upload %s"% request.FILES['image'].name)
connection.setup(['127.0.0.1:9160'])
UserImageModel.create(Email='[email protected]', image=image_data)
return HttpResponse('Stored Successfully!')
else:
form= UsersForms.UserImage()
return render_to_response('Users/uploadImage.html', {'form': form}, context_instance=RequestContext(request))
Moje Szablon:
{% block content %}
<form enctype="multipart/form-data" method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
{% endblock %}
Moja BŁĄD w wytopione Szablon:
AttributeError at /uploadImage
encode
Request Method: POST
Request URL: http://127.0.0.1:8000/uploadImage
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value: encode
Jaki jest Twój pomysł? Proszę mnie poprowadzić ...
Osobiście staram się unikać zapisywania plików binarnych (w szczególności pliki multimedialne, takie jak obrazy, pliki audio i wideo) w bazie danych. Zazwyczaj zapisuję adres URL do obrazu w bazie danych, ale dane obrazu są zapisywane gdzieś tak, jak Amazon S3 z CDN Cloudfront, aby przyspieszyć pobieranie dla użytkowników. Istnieje już dodatek django dla tego http://django-storages.readthedocs.org/en/latest/ – Jared