Edit: Si prega di utilizzare la risposta scelta sopra - il codice qui sotto lavora per la domanda, ma non è consigliabile.
Il file di immagine che si sta caricando può essere trovato in:
request.FILES['image'] # assuming input name is called 'image'
non ti restituiscono un oggetto immagine, ma piuttosto un oggetto UploadedFile. Puoi leggere questa parte dei documenti (presumo che tu stia utilizzando Django 1.3.x): https://docs.djangoproject.com/en/1.3/topics/http/file-uploads/#handling-uploaded-files
Copre i campi e i metodi disponibili nell'oggetto UploadedFile e anche un modo comune di gestire i caricamenti di file manualmente. È possibile utilizzare lo stesso metodo per scrivere il file immagine su un oggetto file e quindi salvarlo su ImageField.
Il seguente codice dovrebbe funzionare, ma non è un codice sicuro. Suppongo che tu stia usando * nix machine, in caso contrario, salva il file di destinazione da qualche altra parte.
@csrf_exempt
def saveImage(request):
# warning, code might not be safe
up_file = request.FILES['image']
destination = open('/tmp/' + up_file.name , 'wb+')
for chunk in up_file.chunks():
destination.write(chunk)
destination.close()
img = someImage()
img.image.save(up_file.name, File(open('/tmp/' + up_file.name, 'r')))
img.save()
# return any response you want after this
Altre cose da prendere nota: assicurarsi che forma ha il seguente attributo per farlo funzionare:
<form enctype="multipart/form-data" ... >
non ricordo questo uso essere normale, ma in realtà, è consigliato Moduli.
fonte
2012-01-11 16:35:53
un'occhiata a [django-photologue] (http://code.google.com/p/django-photologue/), tutto quello che vuoi fare è già fatto :) – juliomalegria
grazie, non ho bisogno di tutte queste funzionalità, sto cercando il più semplice utilizzo di imageField :) –