Python 2.7
djang 1.6.0
Tiny_mce
一、引用必要的js文件 tiny_mce其实是一个很多小插件组成的插件,图片上传就是其中的一个插件,只不过其本身只支持网络图片上传,并不支持本地图片上传,因此就需要我们自己来自定义插件来实现上传的功能,其所在目录如下:/jscripts/tiny_mce/plugins/advimage,打开所在目录,在image.htm文件中引入以下脚本文件:
二、编写HTML上传空间 上面说了插件本身不支持本地图片上传,所以我们要对此进行一定的修改,添加本地上传的功能,不是很复杂,我只是在image.htm中加了form,代码如下:
至此控件修改完毕,效果图如下:不要问我为什么加在下面这么难看,因为任性。三、图片上传事件响应 这个很简单话不多说,直接贴代码如下:function func_upload_image(){ if($('#id_upload_file').val()==''){ alert('请选择要上传的图片@'); return false; } $('#id_insert_image_form').ajaxSubmit({ beforeSubmit:function(){}, success: function(html, status){ //alert(html);var result = html.replace('
', ''); result = result.replace('', ''); if (html.indexOf('格式') > 0) { alert(result); return; } $('#src').val(result); ImageDialog.showPreviewImage($('#src').val()); return; } });}
四、服务器上传时间响应 前端工做处理完了,接下只需要服务器端接受文件解析成图片保存在服务器,并且返回一个网络路径就OK了,这时候就需要一个Python第三方图片处理库PIL,window下傻瓜式的安装,Linux下 apt-get install PIL,注意window下面一定要注意操作系统位数,按相应版本安装,不然就算安装成功运行时也会报错,安装之后处理代码如下,自行体会;def upload_image(request): if request.method == 'POST': if u'id_upload_file' in request.FILES: f = request.FILES['id_upload_file'] parser = ImageFile.Parser() for chunk in f.chunks(): parser.feed(chunk) img = parser.close() file_path = os.path.join(IMAGES_UPLOAD_TEMP_DIR[0]) if not os.path.exists(file_path): os.mkdir(file_path) file_name = str(time.time()) f = os.path.join(file_path, file_name) img.save(f + '.jpg', 'JPEG') return HttpResponse('serverIP/static/image/filname.jpg' )
五、效果预览 到这里呢!整个的修改过程已经完成了,如果你还是不能上传图片,那么请自行重试,接下来让我们看下效果图,好像还不错!(完)