##解决思路:
前端添加一个form,form中包含一个input来选择本地图片,form提交本地图片到server端。
后端接收图片,将图片存储到server上,之后返回一段js,js的作用是填写图片的url,之后出发完成按钮,显示图片到textarea中。
##实现:
###前端html
<scriptsrc=“http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js”>
利用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("<script>top.$('.mce-btn.mce-open').parent().find('.mce-textbox').val('%s').closest('.mce-window').find('.mce-primary').click();</script>" % 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<path>.*)', 'django.views.static.serve', {'document_root': '/home/andy-geng/....'})
]
这样就完成了图片form上传,后端接收存储,返回js完成前端填写url,支持前端获取图片。整个过程ok。
##日后改进:
图片存储应该能存储到media目录中,了解django的存储,再修改。
返回的js如果能仅填写url到图片选择框,而不触发完成按钮,然后用户可以填写描述和大小,之后在手动点击完成来显示图片就更好了。