Summernote使用記錄,完整前後臺

在前臺上傳兩張同樣的Koala.jpg,在文件夾查看,Summernote可以正常使用啦。先上圖再說。

前臺上傳兩張圖

到上傳指定的文件夾中查看

一.前臺

1.引入summernote基本的css,js文件,漢化需要加入語言js文件:summernote.csssummernote.min.jssummernote-zh-CN.min.js

2. html 添加:<input id="MySummernote" class="summernote" >

注意:class必須是summernote

3.Js初始化:

$(document).ready(function () {

    $('.summernote').summernote({#編輯器設置#}

        {

            //width: 750,

            height: 250,

            focus: true, {#頁面打開時光標自動進入編輯區#}

            lang: 'zh-CN',

            toolbar: [{#工具欄加載項設置#}

                //字體工具

            ['fontname', ['fontname']], //字體系列

            ['style', ['bold', 'italic', 'underline', 'clear']], // 字體粗體、字體斜體、字體下劃線、字體格式清除

            ['font', ['strikethrough', 'superscript', 'subscript']], //字體劃線、字體上標、字體下標

            ['fontsize', ['fontsize']], //字體大小

            ['color', ['color']], //字體顏色

            //段落工具

            ['style', ['style']],//樣式

            ['para', ['ul', 'ol', 'paragraph']], //無序列表、有序列表、段落對齊方式

            ['height', ['height']], //行高

            //插入工具

            ['table',['table']], //插入表格

            ['hr',['hr']],//插入水平線

            ['link',['link']], //插入鏈接

            ['picture',['picture']], //插入圖片

            ['video',['video']], //插入視頻

            //其它

            ['fullscreen',['fullscreen']], //全屏

            ['codeview',['codeview']], //查看html代碼

            ['undo',['undo']], //撤銷

            ['redo',['redo']], //取消撤銷

            ['help',['help']], //幫助

            ],

            callbacks:{

                onImageUpload: function(files) {

                    SendImg(files);//前臺圖片上傳函數

                },

            }

        }

    );

});

4.圖片上傳函數:

function SendImg(files) {

    for(var i = 0;i < files.length;i++){

        data = new FormData();

        data.append("file", files[i]);

        url = "/ImgUploads/";

        $.ajax({

            data: data,

            type: "POST",

            url: url,

            cache: false,

            contentType: false,

            processData: false,

            dataType : "json",

            success: function(result) {// result是返回的值

                console.log(result);

                $('#content').summernote('insertImage', result.FileUrl, result.FileName);

            },

            error:function(){

                alert("上傳失敗!")

            }

        });

    }

}

二、後臺圖片接收

1.添加url

url(r'^ImgUploads/$', ImgUploads),

2.view裏面寫ImgUploads函數

@csrf_exempt

def ImgUploads(req):

    file = req.FILES.get('file')  # 獲取文件對象,包括文件名文件大小和文件內容

    #print(file)

    curttime = time.strftime("%Y-%m-%d")

    upload_url = os.path.join(settings.MEDIA_ROOT, 'django-summernote', curttime)

    # print(upload_url)

    folder = os.path.exists(upload_url)

    if not folder:

        os.makedirs(upload_url)

        print("創建文件夾")

    if file:

        file_name = file.name

        if os.path.exists(os.path.join(upload_url, file_name)):

            name, etx = os.path.splitext(file_name)

            finally_name = name + "_" + get_random_str() + etx

            #print(name, etx, finally_name)

        else:

            finally_name = file.name

        upload_file_to = open(os.path.join(upload_url, finally_name), 'wb+')

        for chunk in file.chunks():

            upload_file_to.write(chunk)

        upload_file_to.close()

        file_upload_url = settings.MEDIA_URL + 'django-summernote/' + curttime + '/' + finally_name

        # print(file_upload_url)

        # 構建返回值

        response_data = {}

        response_data['FileName'] = file_name

        response_data['FileUrl'] = file_upload_url

        response_json_data =          json.dumps(response_data)

        # print(response_data, response_json_data)

        return HttpResponse(response_json_data)

    else:

        return HttpResponse()

4.怕文件重名,寫個隨機函數get_random_str(),也寫在view裏面

def get_random_str():

    uuid_val = uuid.uuid4()

    uuid_str = str(uuid_val).encode('utf-8')

    md5 = hashlib.md5()#md5實例

    md5.update(uuid_str)#拿uuid的md5摘要

    return md5.hexdigest()#返回固定長度的字符串

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章