使用JQuery和Django上传图像

在你继续阅读之前,请相信我,当我说我已经阅读了关于这个主题的所有其他post时,他们都没有帮助。

我正在尝试将图片上传function添加到我的网站。 我想通过ajaxpost上传图片。 我不能让这个工作。

这是我有的:

HTML – 我有一个特殊的设置,以便显示图像而不是愚蠢的按钮和文本字段。 当我在选择图像后点击“确定”时,我也使用onChange事件自动提交。

{% csrf_token %}

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; }); 

最后发布到/ api / upload_image /时被点击的django视图

 def ajax_upload( request ): print request.POST print request.FILES return http.HttpResponse(simplejson.dumps([True]), mimetype='application/javascript') 

我试图将图像写入二进制文件,但我无法打开已编写的数据。 为什么使用javascript上传图片这么难? 我是个白痴,只是没有使用简单的解决方案? 如果是这样,请告诉我使用jQuery在Django上传图像的最佳方法是什么。

试试jQuery插件Uploadify或SWFUpload 。 有人甚至为你做了Django集成,请参阅: https : //github.com/tstone/django-uploadify和http://blog.fogtunes.com/2009/11/howto-integrate-swfupload-with-django/ 。

我对django并不熟悉,但我认为问题是通过AJAX上传文件并不像你想象的那么简单。

有几种方法可以解决这个问题,但我建议使用已存在的方法。 由于您使用的是jquery,我建议使用jquery表单插件: http : //jquery.malsup.com/form/#getting-started

该插件支持开箱即用的文件上传,您真正需要做的就是将其连接到您的表单:

 $('#add-picture-form').ajaxForm(); 

另请参阅: 如何异步上载文件?