Prima di continuare a leggere, fidati di me quando dico di aver letto tutti gli altri post su questo argomento, e nessuno di loro ha aiutato.Caricamento immagine usando JQuery e Django
Sto tentando di aggiungere funzionalità di caricamento delle immagini al mio sito web. Voglio caricare l'immagine tramite un post ajax. Non riesco a farlo funzionare.
Ecco quello che ho:
HTML - ho una messa a punto speciale in modo che l'immagine viene visualizzata al posto del pulsante stupido e il campo di testo. Sto anche usando l'evento onChange per inviare automaticamente quando ho colpito "OK" dopo aver selezionato l'immagine.
<form id="add-picture-form" method="POST" action="/api/upload_image/" enctype="multipart/form-data">{% csrf_token %}
<div class="thumbnails" style="width:400px;">
<label class="cabinet BrandHeader">
<input type="file" class="file" id="upload-photo" onChange="$('#add-picture-form').submit();" />
</label>
</div>
</form>
Jquery:
$('#add-picture-form').submit(function() {
//var filename = $("#upload-photo").val();
var photo = document.getElementById("upload-photo");
var file = photo.files[0];
$.ajax({
type: "POST",
url: "/api/upload_image/",
enctype: 'multipart/form-data',
data: {'file': file.getAsBinary(), 'fname' : file.fileName },
success: function(){
alert("Data Uploaded: ");
}
});
return false;
});
Infine mio punto di vista Django che viene colpito quando si posta a/api/upload_image/
def ajax_upload(request):
print request.POST
print request.FILES
return http.HttpResponse(simplejson.dumps([True]), mimetype='application/javascript')
Ho cercato di scrivere l'immagine binaria, ma Non riesco ad aprire i dati che ho scritto. Perché caricare un'immagine con javascript è così difficile? Sono un idiota e non sto usando una soluzione semplice? Se è così, per favore dimmi qual è il modo migliore per usare jQuery per caricare un'immagine in Django.
Dove sei bloccato? Il tuo HTML/JS funziona bene o hai un problema con questo? – bcoughlan
puoi pubblicare file sul server in questo modo? Non pensavo che i file potessero essere ajaxed al server. –