vue+element 实现input框粘贴图片或文本,图片上传

原文地址:vue+element 实现input框粘贴图片或文本,图片上传_kis_me的博客-CSDN博客

vue+element 实现input框粘贴图片或文本
开发electron项目,引入了vue+element ui
直接上结果
第一步,给input框添加监听粘贴事件

<el-input
type="textarea"
    :autosize="{ maxRows: 2 }"
    size="small"
    resize="none"
    @paste.native.capture.prevent="pasting"
    v-model="textMsg"
    placeholder="请输入..."
></el-input>


第二步 在监听事件里,判断是文本就粘贴文本,是图片就走上传方法

// 监听粘贴事件
pasting(event) {
    let txt = event.clipboardData.getData('Text')
    console.log(event.clipboardData.getData('Text'))
    if(typeof(txt) == 'string') {
        this.textMsg += txt
    }
    let file = null
    const items = (event.clipboardData || window.clipboardData).items
    console.log(items)
    if(items.length) {
        for (let i = 0; i < items.length; i++) {
            if (items[i].type.indexOf('image') !== -1) {
                file = items[i].getAsFile()
                console.log(file)
                this.handleChange(file)
                if (!this.canUpload) {
                    this.canUpload = !this.canUpload;
                }
                break
            }
        }
    }
},
// 上传
handleChange(file, filelist) {
    console.log(file, filelist)
    let formData = new FormData()
    formData.append('file', file.raw || file)
    axios.post(
        url
        ,formData,{
        headers:{ 
            'Content-type': 'multipart/form-data',
            bwToken: token
        }}
    ).then( res => {
        console.log(res.data, '1321312321')
        let obj = new Object();
        obj.url = res.data.data
        obj.name = res.data.data.split('/').slice(-1).join();
        this.fileList.push(obj)
        console.log(this.fileList)
    })
    .catch( err => {
        console.log(err)
    })
},


实际效果,聊天功能完成

在这里插入图片描述

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.jsElement UI的帮助下,实现图片上传也非常简单。我们可以使用`el-upload`组件来实现图片上传功能。 HTML代码: ```html <template> <el-upload class="upload-demo" ref="upload" :action="uploadUrl" :multiple="true" :on-success="handleUploadSuccess" :on-error="handleUploadError" :limit="limit"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> </template> ``` 在这个例子中,我们使用了`el-upload`组件来实现图片上传功能。`multiple`属性设置为`true`,表示允许上传多个文件。`action`属性指定上传图片的URL,`on-success`和`on-error`属性分别指定上传成功和上传失败的回调函数。`limit`属性用于指定上传文件的最大数量。在点击上传按钮后,用户可以选择多个文件进行上传。 JavaScript代码: ```javascript <script> export default { data() { return { uploadUrl: '/upload', limit: 5, fileList: [] }; }, methods: { handleUploadSuccess(response, file) { this.fileList.push({ name: file.name, url: response.url }); this.$message.success('上传成功'); }, handleUploadError(error, file, fileList) { this.$message.error('上传失败'); } } }; </script> ``` 在这个例子中,我们定义了两个回调函数`handleUploadSuccess`和`handleUploadError`,分别用于处理上传成功和上传失败的情况。在`handleUploadSuccess`函数中,我们将上传成功的图片的名称和路径添加到`fileList`数组中,以便后续使用。在`handleUploadError`函数中,我们使用`$message`组件来提示用户上传失败的信息。 需要注意的是,我们还需要在服务器端实现图片上传的逻辑。具体实现方式可以参考前面提到的PHP和Python代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值