解决tinymce添加本地图片问题

##解决思路:
前端添加一个form,form中包含一个input来选择本地图片,form提交本地图片到server端。
后端接收图片,将图片存储到server上,之后返回一段js,js的作用是填写图片的url,之后出发完成按钮,显示图片到textarea中。
##实现:
###前端html





利用jquery来完成form上传等

###后端view处理:
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorator.csrf import csrf_exempt
from PIL import Image

def index(request):
          return render(request, 'upload_img/index.htm')

@csrf_exempt
def upload(request):
     try:
          file = request.FILES['image']
          form提交的文件的名字,上面html里面的name
          img = Image.open(file)
          img.thumbnail((500, 500), Image.ANTIALIAS)
          img.save('/home/andy-geng....'+file.name, img.format)
          图片的name和format都是动态获取的,支持png,jpeg,gif等
     except Exception, e:
          return HttpResponse('error %s' % e)
    path = '/site_media/'+file.name
    return HttpResponse("" % path)
      
添加url来获取后端图片,供页面显示:
from upload_img import views
 urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'upload/$', views.upload, name='upload_img'),
url(r'^site_media/(?P.*)', 'django.views.static.serve', {'document_root': '/home/andy-geng/....'})
]

这样就完成了图片form上传,后端接收存储,返回js完成前端填写url,支持前端获取图片。整个过程ok。

##日后改进:
图片存储应该能存储到media目录中,了解django的存储,再修改。
返回的js如果能仅填写url到图片选择框,而不触发完成按钮,然后用户可以填写描述和大小,之后在手动点击完成来显示图片就更好了。

你可能感兴趣的:(技术)