2013-02-20 118 views
0

荫等。Django的CKEditor的文件中使用的Django的CKEditor上传图像相比

荫上传图像文件,并在图像和Flash上​​传图标SWF文件。但是当我上传除这些以外的文件时,Iam出现“无法识别图像文件”错误。对于swf文件,不会创建缩略图,并且不显示任何网址即可显示虚拟图像。

我在CKEditor的看法: @csrf_exempt

def upload(request): 
    upload = request.FILES['upload'] 
    upload_ext = os.path.splitext(upload.name)[1] 
    upload_filename = get_upload_filename(upload.name, request.user) 
    out = open(upload_filename, 'wb+') 
    for chunk in upload.chunks(): 
     out.write(chunk) 
    out.close() 
    if upload_ext != ".swf": 
     create_thumbnail(upload_filename) 
    url = get_media_url(upload_filename) 
    url = url.replace("\\", "/") 
    return HttpResponse(""" 
    <script type='text/javascript'> 
     window.parent.CKEDITOR.tools.callFunction(%s, '%s'); 
    </script>""" % (request.GET['CKEditorFuncNum'], url)) 

缩略图,

def create_thumbnail(filename): 
    image = Image.open(filename) 
    if image.mode not in ('L', 'RGB'): 
     image = image.convert('RGB') 
    imagefit = ImageOps.fit(image, THUMBNAIL_SIZE, Image.ANTIALIAS) 
    imagefit.save(get_thumb_filename(filename)) 

任何人都帮我解决这个问题..

+0

你上传的所有其他文件类型是什么? – 2013-02-20 05:27:50

回答

2

从技术上讲,只有图像文件可以缩略图。所有其他类型都应根据其类型具有默认缩略图(可能是图标图像)。在你的代码中,逻辑应该是

if upload_ext in [".jpg", ".png",]: 
    create_thumbnail(filename) 
else: 
    create_default_thumbnail(upload_ext) // for .swf, .doc etc