django下ckeditor上传图片的实现
2014-07-09 11:14
549 查看
环境:django 1.6
ckeditor:4.x
步骤1:
下载ckeditor,找到image.js这个文件,搜索“upload”可以找到这一段id:'Upload',hidden:true。实际上上传功能被隐藏了,把上面的true改成false,再打开编辑器,就能找到上传功能了。
步骤2:
可以在ckeditor/config.js中配置。加入:config.filebrowserUploadUrl="/uploadimg/";#这个是post图片的URL
步骤3:
写接收的views(如果要对图片进行裁剪等操作,可以使用PIL)
def sceneImgUpload(request):
if request.method == 'POST':
callback = request.GET.get('CKEditorFuncNum')
try:
path = "static/upload/" + time.strftime("%Y%m%d%H%M%S",time.localtime())
f = request.FILES["upload"]
file_name = path + "_" + f.name
des_origin_f = open(file_name, "wb+")
for chunk in f.chunks():
des_origin_f.write(chunk)
des_origin_f.close()
except Exception, e:
print e
res = "<script>window.parent.CKEDITOR.tools.callFunction("+callback+",'/"+file_name+"', '');</script>"
return HttpResponse(res)
else:
raise Http404()
步骤4:
如果启用了csrf,会报错。因为ckeditor不会自带csrf,所以要自己添加。
打开ckeditor.js源文件,插入函数:
function getCookie(name){
var strCookie=document.cookie;
var arrCookie=strCookie.split("; ");
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
if(arr[0]==name)return arr[1];
}
return "";
}
然后搜索:multipart/form-data,会找到一个form,在这个form里面插入:
<input type="hidden" name="csrfmiddlewaretoken" value="'+getCookie("csrftoken")+'">
完成csrf的验证。
续:
因为ckeditor自带是异步提交,如果是自己配置提交上传图片选择框:
<form action="/scene/imgUpload/" method="post" enctype="multipart/form-data">
{% csrf_token %} <!--最好用异步提交(ajaxupload.js)-->
<input type="file" name="upload" class="file" />
<input type="button" id="imgUploadButton" value="上传"/>
</form>
因为默认不是异步提交,如果需要异步提交,这里有2个参考方法:
1:使用插件ajaxupload.js
2:使用iframe
ckeditor:4.x
步骤1:
下载ckeditor,找到image.js这个文件,搜索“upload”可以找到这一段id:'Upload',hidden:true。实际上上传功能被隐藏了,把上面的true改成false,再打开编辑器,就能找到上传功能了。
步骤2:
可以在ckeditor/config.js中配置。加入:config.filebrowserUploadUrl="/uploadimg/";#这个是post图片的URL
步骤3:
写接收的views(如果要对图片进行裁剪等操作,可以使用PIL)
def sceneImgUpload(request):
if request.method == 'POST':
callback = request.GET.get('CKEditorFuncNum')
try:
path = "static/upload/" + time.strftime("%Y%m%d%H%M%S",time.localtime())
f = request.FILES["upload"]
file_name = path + "_" + f.name
des_origin_f = open(file_name, "wb+")
for chunk in f.chunks():
des_origin_f.write(chunk)
des_origin_f.close()
except Exception, e:
print e
res = "<script>window.parent.CKEDITOR.tools.callFunction("+callback+",'/"+file_name+"', '');</script>"
return HttpResponse(res)
else:
raise Http404()
步骤4:
如果启用了csrf,会报错。因为ckeditor不会自带csrf,所以要自己添加。
打开ckeditor.js源文件,插入函数:
function getCookie(name){
var strCookie=document.cookie;
var arrCookie=strCookie.split("; ");
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
if(arr[0]==name)return arr[1];
}
return "";
}
然后搜索:multipart/form-data,会找到一个form,在这个form里面插入:
<input type="hidden" name="csrfmiddlewaretoken" value="'+getCookie("csrftoken")+'">
完成csrf的验证。
续:
因为ckeditor自带是异步提交,如果是自己配置提交上传图片选择框:
<form action="/scene/imgUpload/" method="post" enctype="multipart/form-data">
{% csrf_token %} <!--最好用异步提交(ajaxupload.js)-->
<input type="file" name="upload" class="file" />
<input type="button" id="imgUploadButton" value="上传"/>
</form>
因为默认不是异步提交,如果需要异步提交,这里有2个参考方法:
1:使用插件ajaxupload.js
2:使用iframe
相关文章推荐
- CKEditor图片上传实现详细步骤(使用Struts 2)
- PHP CKEditor 上传图片实现代码
- ckeditor+ckfiner实现图片上传
- CKEditor整合ckfinder实现图片上传
- CKEditor实现图片上传
- 用ckeditor实现图片上传
- CKEditor图片上传实现详细步骤(使用Struts 2)
- CKEditor图片上传实现详细步骤
- 在BAE搭建的Django中实现图片上传并用jquery预览图片
- CKEditor实现图片上传
- ckeditor实现上传图片,flash等文件。
- PHP中配置Ckeditor和Ckfinder(实现图片上传)
- CKeditor如何实现图片上传功能
- CKEditor图片上传实现详细步骤(使用Struts 2)
- ckeditor 实现 servlet 图片上传 配置
- django中实现图片上传
- ckeditor+ckfinder实现图片上传的时候,中文命名图片上传出错
- 黑马程序员_ckeditor+ckfinder实现本地图片上传
- ASP.NET项目中使用CKEditor +CKFinder 实现上传图片
- PHP CKEditor 上传图片实现代码