vue+springboot+element+vue-resource实现文件上传教程

vue页面设置

<el-upload

class="upload-demo"

action=""

:before-upload="beforeUpload" //上传前操作

:before-remove="beforeRemove" //移除钱操作

:multiple="false" //禁止多选

:http-request="myUpload" //文件上传,重写文件上传方法,action的路径不会起作用

accept=".jar" //限制文件选择类型

:drag="false"

:data="param" //参数

:file-list="fileList">//文件显示列表

<el-button size="small" type="primary">点击上传</el-button>

<div slot="tip" class="el-upload__tip">只能上传jar文件,且不超过500kb</div><!-- :headers="head"-->

</el-upload><!--:on-preview="handlePreview"-->

/*文件上传前,判断文件名是否存在,等其他处理*/

beforeUpload(file){

console.log("文件名",file.name,this.fileList)

for (let i = 0; i <this.fileList.length ; i++) {

if (this.fileList[i].name==file.name) {

this.$message.info("文件已存在");

return false;

}

}

this.file=file;

return true;

},

/*文件移除前,提示是否删除*/

beforeRemove(file,fileList){//delJar

this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {

confirmButtonText: '确定',

cancelButtonText: '取消',

type: 'warning'

}).then(() => {

this.$http.get('/aaaa/task/del?taskId='+this.taskId+'&name='+file.name).then(function(res) {

......

});

}).catch(() => {

this.getJarList();

return false;

});

},

/*文件上传,重写文件上传方法,action的路径不会起作用*/

myUpload(file){

let fd = new FormData();

fd.append('file',this.file);//传文件

fd.append('taskId',this.taskId);//传其他参数

// fd.append('filename',file.name);//传其他参数

this.$http.post('/aaaa/task/add',fd).then(function(res) {

....

});

},

fileList一个对象的内容

name:"xxxx.jar"

status:"success"

uid:123456456

参数

this.param={

taskId:this.taskId

}

springboot设置

1.请求的注解:produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POS

@RequestMapping(value = "/add", produces = "multipart/form-data;charset=utf-8", method = RequestMethod.POST)

public String addJar(int taskId, HttpServletRequest request) throws IOException, ServletException {

....

//获取文件

Part part = request.getPart("file");// input的name值

String dis = part.getHeader("Content-Disposition");

// 获取文件名--sdsf.jar

String fna = dis.substring(dis.indexOf("filename=") + 10, dis.length() - 1);

String fname = fna.substring(fna.lastIndexOf("\\") + 1, fna.length());// 有的浏览器获取的是路径+文件名

// 若是文件名为空,说明此时没有选择文件,返回,文件上传失败,选择文件

if (fname.length() < 1) {

//此时没有选择文件

}

....

}

补充知识:elementUI upload图片文件上传到指定后端接口解决方法

1. 一般后端提供接口上传文件都有参数。如果我们不传参就会报错或显示图片不存在,上传失败。所以我们要参考他的文档。action 是上传路径; ==name== 就是传参的属性(关键)。

imageUrl: '',

<el-form-item label="封面图片" :required="true">

<el-upload class="avatar-uploader" action="http://xxx.cn/xx/file/uploadImg/" name='photo' :show-file-list="false"

:on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">

<img v-if="imageUrl" :src="imageUrl" class="avatar">

<i v-else class="el-icon-plus avatar-uploader-icon"></i>

</el-upload>

</el-form-item>

handleAvatarSuccess(res, file) {

console.log(res)

console.log(file)

this.imageUrl = URL.createObjectURL(file.raw);

console.log(this.imageUrl)

},

//验证图片格式

beforeAvatarUpload(file) {

const isJPG = file.type === 'image/jpeg';

const isLt2M = file.size / 1024 / 1024 < 2;

if (!isJPG) {

this.$message.error('上传头像图片只能是 JPG 格式!');

}

if (!isLt2M) {

this.$message.error('上传头像图片大小不能超过 2MB!');

}

return isJPG && isLt2M;

},

css代码

/* 图片上传css */

.avatar-uploader /deep/.el-upload {

border: 1px dashed #d9d9d9;

border-radius: 6px;

cursor: pointer;

position: relative;

overflow: hidden;

}

.avatar-uploader .el-upload:hover {

border-color: #409EFF;

}

.avatar-uploader-icon {

font-size: 28px;

color: #8c939d;

width: 100px;

height: 100px;

line-height: 100px;

text-align: center;

}

.avatar {

width: 100px;

height: 100px;

display: block;

}

参考elementUI文档:https://element.eleme.cn/#/zh-CN/component/upload

以上这篇vue+springboot+element+vue-resource实现文件上传教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是 vue+springboot+element+vue-resource实现文件上传教程 的全部内容, 来源链接: utcz.com/p/218263.html

回到顶部