1. 程式人生 > >quill自定義圖片上傳

quill自定義圖片上傳

quill是個不錯的富文字編輯器,但是它的圖片上傳是直接將本地圖片讀成base64跟文字混合在一起,這顯然不適合一般開發需求,我們希望插入的是一個圖片url,故這裡將基於vue.js實現quill的圖片上傳功能。

沒有什麼好說的,直接貼程式碼

quillEditor.vue

<template>
	<div>
		<quilleditor v-model="content"
				ref="myTextEditor"
                :options="editorOption"
                @change="onChange">
            <div id="toolbar" slot="toolbar">
           		<span class="ql-formats"><button type="button" class="ql-bold"></button></span>
        <span class="ql-formats"><button type="button" class="ql-italic"></button></span>
        <span class="ql-formats"><button type="button" class="ql-blockquote"></button></span>
        <span class="ql-formats"><button type="button" class="ql-list" value="ordered"></button></span>
        <span class="ql-formats"><button type="button" class="ql-list" value="bullet"></button></span>
        <span class="ql-formats"><button type="button" class="ql-link"></button></span>
        <span class="ql-formats">
        <button type="button" @click="imgClick" style="outline:none">
        <svg viewBox="0 0 18 18"> <rect class="ql-stroke" height="10" width="12" x="3" y="4"></rect> <circle class="ql-fill" cx="6" cy="7" r="1"></circle> <polyline class="ql-even ql-fill" points="5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12"></polyline> </svg>
      	</button>
      </span>
      <span class="ql-formats"><button type="button" class="ql-video"></button></span>
         	</div>
  </quilleditor>
	</div>
</template>
<script>
	import {quillEditor} from 'vue-quill-editor'
	export default {
	    props:{
	      value:{
	        type:String
	      },
	      /*上傳圖片的地址*/
	      uploadUrl:{
	        type:String,
	        default:'http://localhost/test/upload.php'
	      },
	      /*上傳圖片的file控制元件name*/
	      fileName:{
	        type:String,
	        default: 'upload_file'
	      }
	    },
	    data() {
	      return {
	        content: '',
	        editorOption: {
	          modules: {
	            toolbar: '#toolbar'
	          }
	        },
	      }
	    },
	    methods: {
	      onChange(){
	        this.$emit('input', this.content)
	      },
	      /*選擇上傳圖片切換*/
	      onFileChange(e){
	        var self=this
	        var fileInput=e.target
	        if(fileInput.files.length==0){
	          return
	        }
	        this.editor.focus()
	        if(fileInput.files[0].size>1024*1024*100){
	          this.$alert('圖片不能大於600KB', '圖片尺寸過大', {
	            confirmButtonText: '確定',
	            type: 'warning',
	          })
	        }
	        var data=new FormData
	        data.append(this.fileName,fileInput.files[0])
	        this.axios.post(this.uploadUrl,data).then(function(res){
	          if(res.data) {
	            self.editor.insertEmbed(self.editor.getSelection().index, 'image', res.data.url)
	          }
	        })
	      },
	      /*點選上傳圖片按鈕*/
	      imgClick() {
	        if(!this.uploadUrl){
	          console.log('no editor uploadUrl')
	          return;
	        }
	        /*記憶體建立input file*/
	        var input=document.createElement('input')
	        input.type='file'
	        input.name=this.fileName
	        input.accept='image/jpeg,image/png,image/jpg,image/gif'
	        input.onchange=this.onFileChange
	        input.click()
	      }
	    },
	    computed:{
	      editor() {
	        return this.$refs.myTextEditor.quill
	      }
	    },
	    components: {
	      'quilleditor': quillEditor
	    },
	    mounted(){
	      this.content=this.value
	    },
	    watch:{
	      'value'(newVal, oldVal) {
	        if (this.editor) {
	          if (newVal !== this.content) {
	            this.content = newVal
	          }
	        }
	      },
	    }
	  }
	
</script>

圖片上傳地址改成自己的

我在main.js裡引入了axios,所以這裡可以直接使用this.axios,根據你的配置做適當調整即可

相關推薦

quill定義圖片

quill是個不錯的富文字編輯器,但是它的圖片上傳是直接將本地圖片讀成base64跟文字混合在一起,這顯然不適合一般開發需求,我們希望插入的是一個圖片url,故這裡將基於vue.js實現quill的圖片上傳功能。 沒有什麼好說的,直接貼程式碼 quillEditor.vue

vue-quill-editor定義圖片

我們通常都會使用富文字編輯器在後臺編輯內容,開發vue當然也少不了,我們通過vue官網的連結可以找到一些資源,或者去github上查詢一些開源的編輯器。我使用的是vue-quill-editor,它的介面很簡潔,功能也滿足平時的編輯需要,不過於臃腫,但是它預設的圖片上傳是使

ueditor 編輯器,定義圖片

action () scree val ech idt tof height 使用 <div> <h1>完整demo</h1> <form method="post" name="form">

vue定義圖片預覽功能

//vue裡面的HTML程式碼 <div id="modificationPreview">         <input type="file" accept="image/*" @change="changeFile" id="m

改造Kindeditor之:定義圖片外掛。 外加給圖片增加水印效果的選擇。

場景: 編輯部人士編輯文章時需要在文章中上傳圖片。但上傳圖片時需要增加是否增加水印的選擇(有可能是自己公司的原創作品)。所以需要改造Kindeditor . 1: 刪除Kindeitor 預設的引數物件裡的Image  新增自定bareheadimage 有原來的 item

html+css實現定義圖片按鈕

普通的input[type=‘file’]的效果很樸素 可以自定義一個file選擇檔案的按鈕: 思路為: 用定位將自定義的按鈕遮住原來的選擇檔案按鈕, 再讓點選自定義按鈕時觸發原來的選擇檔案按鈕的事件即可 (對此,label可實現) eg: html: css樣式: 結果圖:

Ueditor定義圖片路徑,以及圖片回顯路徑

最近發現Ueditor有個小bug,每次圖片都上傳到專案路徑下,當重新發佈一個版本後,圖片就沒了,所以決心修改結構如下:1. 首先,進入config.json,修改如下:其他的都不改,只改選中部分,這個是圖片訪問路徑字首我們要關注的是【檔案訪問路徑】和【檔案上傳路徑】然後,分

django 定義圖片路徑和檔名

圖片上傳中,如果不對上傳的檔名做處理,很容易引起檔名重複,這會覆蓋之前上傳的圖片,django提供了自定義上傳檔名的方法。 def generate_filename(self, instance, filename): """ Ap

關於定義一個的file按鈕

ner receive play display list 之前 引入 image oot 在input中html給我們一個 type file用來做文件上傳的功能,比如 但是這樣的樣式,實在難看,在開發的時候看了layui和bootstrap的點擊上傳,都很不錯。 前

netty定義協議

客戶端: import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.nett

定義檔案按鈕

WEB開發中,不同的瀏覽器對於<input type="file">標籤顯示的樣式是不一樣的,可能帶來不好的使用者體驗。下面介紹下檔案上傳按鈕的使用者自定義樣式的實現方法。 1、HTML程式碼 <div class="new-contentarea">

[html]定義檔案按鈕

如果覺得檔案上傳按鈕太難看,如果覺得上傳按鈕在各個瀏覽器上顯示的效果不一致。我們可以自定義檔案上傳按鈕。 實現方案是將檔案上傳按鈕的點選事件傳遞給其他按鈕。 .html -> <input type = "file" id="myFile" /> <

定義package到 pypi

How to upload package to pypi Install twine pip install twine Init file First of all, make sure that the structure of pr

【更改表單元素預設樣式】更改定義檔案按鈕樣式

雖然我們無法直接更改表單的input[type=file]按鈕,但是可以通過曲線救國的方式來實現。 思路大致是這樣的: 1、將按鈕設定透明度為0 2、在上面覆蓋一個button,使二者位置完全重合,這樣就可以實現改變上傳按鈕的樣式,而不會影響上傳功能。

定義input美化標籤

1.大家在專案中,經常會遇到input標籤美化的問題,一些框架封裝好的按鈕,在某些時候並不能滿足我們的需求,那麼今天就寫一個input上傳控制元件的美化2.在頁面中定義一個input標籤,在定義一個span標籤3.multiple 是 multiple="multiple"

定義檔案按鈕的樣式

的分享, 1、在比較舊的瀏覽器中(比如IE9及以下,不支援 fileAPI,不支援 XMLHttprequest level2 只能用表單post檔案)上傳圖片時,只能使用 表單 post,處於安全上的考慮,input[type="file"] 的檔案選擇按鈕樣式並不能隨

Vue Quill Editor定義圖片/視訊(Element UI + OSS)、字型、字型大小、段落等

  近期專案中需要使用富文字編輯器,開始想到的富文字編輯器是百度的UEditor,UEditor功能齊全、外掛多,但是圖片只能上傳到本地伺服器,如果需要上傳到其他伺服器需要改動原始碼,而且是PHP、JSP、ASP、.Net版本,同時UEditor體積過大壓縮包有

vue中使用vue-quill-editor富文字編輯器,定義toolbar,圖片到七牛

一、npm 安裝 vue-quill-editor  二、在main.js中引入 import VueQuillEditor from 'vue-quill-editor' // require styles 引入樣式 import 'quill/dist/quill.c

Vue之使用 vue-quill-editor_定義toolbar_修改圖片方式

1.安裝npm install vue-quill-editor --save 2.引入import { quillEditor } from 'vue-quill-editor' components: { quillEditor }, 3.使用<quill-editor v-model="

ueditor樣式過濾去除和遠程圖片定義

ueditorueditor自定義編輯的時候,比如需要做延遲加載,這個時候需要自定義圖片等,但是,ueditor會去除img上面的屬性,比如data-original和把遠程圖片自動上傳。 這個時候,首先,需要給圖片自動上傳加上屬性,不如對於jquery.lazyload延遲加載的圖片,必定帶有data-or