首页 > 编程知识 正文

vue实现原理,vue大文件上传

时间:2023-05-05 20:12:20 阅读:11609 作者:1399

在本文的示例中,Vue共享了用于实现附件上传的具体代码。 具体内容如下

前言

前端UI使用了element-ui的上传功能

本文主要记录代码,下次复制&; 方便粘贴

前端部分

HTML

limit :限制一个文件

on-remove :删除附件时的挂接函数主要在控制台输出中

on-error :用于上载异常后的处理。 本人主要用于关闭弹匣或全屏等待

文件-list :绑定附件

自动上传:禁止自动上传,如果为真,选择文件后自动上传

http-request :自定义文件上传请求的方式。 默认方法会导致mock和XML请求重新生成,从而导致找不到文件的问题。 虽然对mock发表了评论,但保持原样。 没有具体讨论

action :由于原始上传文件的路径使用自定义上传文件请求,即http-request,因此可以自由写入该字段,但似乎必须写入

ref='upload '

:limit='1'

:on-remove='handleRemove '

:on-error='onError '

:file-list='fileList '

:auto-upload='false '

:http-request='uploadFile '

action=' https://JSON placeholder.typ icode.com/posts/'

class='upload-demo '

选择文档

支持{{strrebuild(filetype ) }}格式的上传,{{ fileSize }}M JS以下

import { strRebuild,last substring } from ' @/utils/str util '

import { message } from ' @/utils/message '

导出默认值{

数据()。

返回{

//附件清单

文件列表: [ ],

//允许的文件类型

fileType: ['xls '、' xlsx '、' pdf '、' doc '、' docx '、' txt '、' jpg '、' jpeg'],

//执行上传文件的大小,单位m

fileSize: 10,

}

(,

methods: {

//清空表单

clear ()。

//清空附件

this.$refs.upload.clearFiles (

(,

//附件检查

//检查附件是否为可上传类型

//检查附件是否超过限制大小

检查文件() }

var flag=true

var tip=' '

var files=this.$ refs.upload.uploadfiles

Files.Foreach(item={

//文件太大

if (item.size this.filesize * 1024 * 1024 ) ) }

flag=false

tip='文件超过了' this.fileSize 'M '

}

//文件类型不是可上传的类型

if (! this.filetype.includes{

flag=false

tip='文件类型不可上传'

}

() )

if (! flag ) {

消息(错误)、tip )。

}

返回标志

(,

//提交附件

提交上载

if(this.checkfile () ) ) )。

console.log ('上传附件.')

this.$refs.upload.submit (

} else {

console.log ('取消上传) )。

}

(,

//自定义文件上传方法

uploadfile(file ) {

//文件放入FormData提交

常数param=new formdata (

param.append('files ',file.file ) )。

上载

File(param).then(response => {

// TODO 一些关闭弹框,上传成功提示等

})

},

// 移除附件

handleRemove(file, fileList) {

console.log('移除附件...')

},

// 附件上传失败,打印下失败原因

onError(err) {

message('error', '附件上传失败')

console.log(err)

},

// 字符串重组

strRebuild(str) {

return strRebuild(str)

}

}

}

工具类 JS

strUtil.js

// 字符串相关工具类

// 数组根据分隔符重组为字符串

export function strRebuild(arr, split) {

if (arr === undefined || arr === null || !(arr instanceof Array) || arr.length === 0) {

return ''

}

if (split === undefined || split === null) {

split = ','

}

var str = ''

arr.forEach((v, i) => {

if (i === arr.length - 1) {

str = str + v

} else {

str = str + v + split

}

})

return str

}

// 截取最后一个特定字符后面的字符串

export function lastSubstring(str, split) {

if (str === undefined || str === null || split === undefined || split === null) {

return ''

}

return str.substring(str.lastIndexOf(split) + 1)

}

message.js

import { Message } from 'element-ui'

// 提示封装 type 提示类型, msg 提示信息,duration 持续时间

export function message(type, msg, duration) {

Message({

message: msg || 'success',

type: type || 'success',

duration: duration || 5 * 1000

})

}

// 带删除键提示,duration 为 0 时,不会自动消失

// 提示封装 type 提示类型, msg 提示信息,duration 持续时间

export function messageShowClose(type, msg, duration) {

Message({

message: msg || 'success',

type: type || 'success',

duration: duration || 0,

showClose: true

})

}

API

// 附件上传

export function uploadFile(file) {

return request({

url: '/uploadFile',

method: 'post',

headers: {

'Content-Type': 'multipart/form-data; charset=utf-8'

},

data: file

})

}

后端接口

/**

* 单文件上传

* @param files 接收文件要以数组接收

* @return

*/

@PostMapping(value="/uploadFile")

public void uploadFile(@RequestBody MultipartFile[] files) {

// TODO

}

更多文章可以点击《Vue.js前端组件学习教程》学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: Vue实现附件上传功能

本文地址: http://www.cppcns.com/wangluo/javascript/314412.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。