首页 > 其他分享 >vue上传图片到指定文件夹

vue上传图片到指定文件夹

时间:2023-12-21 11:57:01浏览次数:20  
标签:files vue list fileList filename loading 文件夹 上传

vue代码
<template>
<div class="app-container">
<div class="wenben">
<el-upload
:disabled="dis==0?true:false"
class="upload-demo"
:action="uploadUrl"
:on-change="handleChange"
:on-error="uploadFileError"
:on-success="uploadFileSuccess"
:show-file-list="false"
:file-list="fileList"
:headers="headers"
name="files"
ref="upload"
v-loading.fullscreen.lock="loading"
element-loading-text="正在上传文件,请稍候......"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.1)"
multiple
:limit="2"
:on-exceed="handleExceed">
<el-button size="small" type="primary" :disabled="dis==0?true:false">导入可见光图片</el-button>
</el-upload>
<span id="txt">未上传</span>
</div>
</div>
</template>
export default {
name: 'Pv',
// 定义数据
data() {
return {
uploadUrl: process.env.VUE_APP_BASE_API + "/system/pv/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken()
},
dis: 1,//1 可用 0 不可用
}
},
created() {
},
methods: {
handleChange(file, fileList) {
if (this.loading && this.num == fileList.length) {
this.num = 0;
this.files = []
this.loading = false;
} else {
this.loading = true;
this.files = fileList
document.getElementById('txt').innerHTML = '正在上传中...';
}
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 2 个文件,本次选择了 ${files.length} 个文件`);
},
//上传失败
uploadFileError(err, file, fileList) {
this.$message.error("上传失败!")
document.getElementById('txt').innerHTML = '未上传';
this.dis = 1;
},
//上传成功
uploadFileSuccess(res, file, fileList) {
this.dis = 0;
this.dis1 = 1;
this.files = []
this.num++;
this.$refs.upload.clearFiles();
this.kjlist.push(res.list[0]);
this.kjlist1.push(res.list1[0]);
document.getElementById('txt').innerHTML = '上传完成';
},
}
<style>
.wenben {
margin-top: 5px;
width: 150px;
float: left;
}
</style>


后端代码
@ResponseBody
@RequestMapping("upload")
public JSONObject upload(@RequestParam("files") MultipartFile[] files) throws Exception {
String path = filePath + "kj/";
List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
try {
// 创建桶
minioConfig.makeBucket("guangfu");
// 设置桶读写权限
minioConfig.setBucketPolicy("guangfu", "read-write");
for (int i = 0; i < files.length; i++) {
String filename = files[i].getOriginalFilename();
// 新建文件
File filepath = new File(path, filename);
// 判断路径是否存在,如果不存在就创建一个
if (!filepath.getParentFile().exists()) {
filepath.getParentFile().mkdirs();
}
try {
// 写入文件
files[i].transferTo(new File(path + File.separator + filename));
File temp = new File(path, filename);
for (int j = 0; j < j + 1; j++) {
if (temp.exists()) {
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
String url = minioConfig.uploadFile("guangfu","kj/"+filename, path + filename);
list.add(path + filename);
list1.add(url);
}

} catch (Exception e) {
e.printStackTrace();
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("list", list);
jsonObject.put("list1", list1);
return jsonObject;
}

 

参考文章:http://blog.ncmem.com/wordpress/2023/12/21/vue%e4%b8%8a%e4%bc%a0%e5%9b%be%e7%89%87%e5%88%b0%e6%8c%87%e5%ae%9a%e6%96%87%e4%bb%b6%e5%a4%b9/

欢迎入群一起讨论

 

 

标签:files,vue,list,fileList,filename,loading,文件夹,上传
From: https://www.cnblogs.com/songsu/p/17918669.html

相关文章

  • vue3+vite动态引入图片(import.meta.glob)
    Vite官方提供的 import.meta.glob API。这个方法一般用于批量引入js或者ts文件,但实际上这个方法就是很多import语句的集合而已,import是可以引入图片的,所以import.meta.glob也同样可以引入图片资源,只不过需要加入配置项as:'url'就可以了。 通常来说,我们可以用ES提供的......
  • vue中下载--后端返回的文档流
     实现后端返回的文档流,点击下载<divclass="prom-add"@click="downLoad"><iclass="el-icon-download"></i>下载</div>importrequestfrom'@/router/axios'//下载asyncdownLoad(){letparams={......
  • Vue中动态(import 、require)显示img图片
    vue中,经常会遇到显示图片的问题,如果是一个普通组件的话,那么这样就可以了<imgsrc="../assets/images/avtor.jpg"width="100%">上文的弊端有两个:首先,是采用绝对路径引入。如果以后图片移动了位置,需要修改代码。其次,如果说图片是一个logo图片,同一页面内有多处用到。就需要引用......
  • Vue项目引入图片的两种场景和三种方式
    场景一:public目录下的图片public目录public目录下的图片引入方式:Bash<!--'/images/'+图片名称,这种属于绝对路径,/指向public目录--><imgsrc="/images/image.png"> 场景二:在src目录下的图片src目录 通过import引入图片Bash//第一步:import引入importerrG......
  • Vue基础
    1vue是什么 2谁开发的 3Vue的特点  ......
  • 边做笔试边查缺补漏——算法、js基础、vue3官方文档、八股文
    边投简历边完善自己的知识库。最近这些天一直在面试和笔试+投简历中,每次面试或笔试完后其实最重要的不是结果,而是做题的过程或者说对话的过程。因为只有这些才让我知道自己哪里还有不足,比如一碰到算法题就歇菜、vue3和vue2混用、js基础知识不牢固等等。那我痛定思痛,有缺点咱就认......
  • vue vue3 jsx tsx
    0.安装插件(@vitejs/plugin-vue-jsx)vite官方提供了官方的插件来支持在vue3中使用jsx/tsx,直接安装就行。yarn add @vitejs/plugin-vue-jsx -D安装完之后在vite.config.ts中插入一下代码import vueJsx from "@vitejs/plugin-vue-jsx";export default defineConfig({......
  • Spring Boot学习随笔- 文件上传和下载(在线打卡、附件下载、MultipartFile)
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十二章、文件上传、下载文件上传文件上传是指将文件从客户端计算机传输到服务器的过程。上传思路前端的上传页面:提交方式必须为post,enctype属性必须为multipart/form-data开发后端的Controller后端方法接收参数......
  • Vue3
    1、ref和reactive原来reactive是一个对象类型,使用reactive重新赋值一个对象不起作用<scriptlang="ts"setup>import{reactive}from"vue";letuser=reactive({name:'小明',age:10});constdj=()=>{user={name:'大白',age:1......
  • vue3 静态配置文件
    前言有时候我们负责做的只是一个大平台系统下的某个子系统,有时候我们需要调用这个大平台系统下别的子系统的接口。如果直接把别的接口地址,直接写在代码里,那么如果别的子系统的接口调整了,会影响到我们的系统,我们还要重新打包,部署,会很繁琐。解决思路我们的想法是这样:敲代码的......