UniApp文件上传(SpringBoot+Minio)

一、Uni文件上传

(1)、文件上传的问题

UniApp文件上传文档

	uni.uploadFile({
url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
files: 图片地址对象数组,
formData: {
'user': 'test'
},
success: (res) => {
console.log(res.data);
}
});

官方给出得使用方法,但是。。。图片对象数组要以key-value存储

name = 文件名称,uri = 文件地址路径

这样就会有一个问题,后端无法用数组或集合取值,因为官方说如果name一样或者不写

那总不能写n个参数,后台用n个参数接把、很 cao单 的问题

(2)、解决思路

百度若干个小时,听了一堆一摸一样的屁话,找到一篇文章说 MultipartRequest,于是后台就用这个接参数,发现可以接到。

1、首先

uni拿到上传文件的图片地址数组对象,然后把他转成uni要求的key-value格式

	//把传过来的图片path数组转为指定格式
var filelist = [];
for (var i = 0; i < imgList.length; i++) {
var obj = {};
obj.name = "img" + i;
obj.uri = imgList[i];
filelist.push(obj)
}

这样第一张图叫 img0 、、以此类推

2、发送请求

传给后端之前,告诉后端总共有几张图片要传过去

	uni.uploadFile({
url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
files: 上边的filelist,
formData: {
//图片张数
'length': 上边的filelist.length
},
success: (res) => {
console.log(res.data);
}
});

3、后端接参

上边说了,后端用MultipartRequest接收参数

    @PostMapping(value = "/upimg", headers = "content-type=multipart/form-data")
@ApiOperation("多文件上传")
public String upload(MultipartRequest request, Integer num) throws Exception {
return Result.ok(this.MinioUtils.putObject(request, num));
}

4、后端结合Minio的处理

上篇文章也说了 Minio 是怎么上传文件的

public List<String> putObject(MultipartRequest request, Integer num) throws Exception {
if (num == null || num < 1) {
throw new CustomizeException(ErrorCode.UP_IMAGE_NUM_IS_NULL);
}
// bucket 不存在,创建
if (!minioClient.bucketExists(this.bucket)) {
minioClient.makeBucket(this.bucket);
}
InputStream inputStream;
//返回的图片地址数组
List<String> imgList = new ArrayList<>();
try {
//循环多文件上传
for (int i = 0; i < num; i++) {
request.getFile("img" + i)//循环取文件并上传
imgList.add(文件地址);
}
} catch (Exception ex) {
throw new CustomizeException(ErrorCode.UP_IMAGE_ERROR);
}
return imgList;

5、uni处理返回结果

uni收到的返回结果是 String要做下处理才能使用

success: (res) => {
JSON.parse(res.data);
}

二、文件上传的异步问题

uni的文件上传因为是异步,所以也要做些处理

export function upup(list) {
//把传过来的图片path数组转为指定格式
var filelist = [];
for (var i = 0; i < list.length; i++) {
var obj = {};
obj.name = "img" + i;
obj.uri = imgList[i];
filelist.push(obj)
} return new Promise((resolve, reject) => {
//上传图片
uni.uploadFile({
url: 请求地址,
files: filelist,
formData: {
'num': 图片张数
},
header: {
"Content-Type": "multipart/form-data"
},
success: (res) => {
//返回的是字符需要转json
resolve(JSON.parse(res.data))
},
fail: (res) => {
reject
}
})
})
}

调用的时候

upup.then(res => {
//在此处做处理,因为是异步所以此处的res只能在此处用
//无法声明变量把res赋值给他
//因为赋值完毕后res还没跑完
})

完~,百度一查一群篮子货在哪儿复制粘贴博客,几页的答案一摸一样,一群篮子货。如有需要转载,记得标明出处。

UniApp文件上传(SpringBoot+Minio)的更多相关文章

  1. minio实现文件上传下载和删除功能

    https://blog.csdn.net/tc979907461/article/details/106673570?utm_medium=distribute.pc_relevant_t0.non ...

  2. Springboot 一行代码实现文件上传 20个平台!少写代码到极致

    大家好,我是小富~ 技术交流,公众号:程序员小富 又是做好人好事的一天,有个小可爱私下问我有没有好用的springboot文件上传工具,这不巧了嘛,正好我私藏了一个好东西,顺便给小伙伴们也分享一下,d ...

  3. SpringBoot 文件上传临时文件路径问题

    年后放假回来,一向运行OK的项目突然图片上传不了了,后台报错日志如下: java.io.IOException: The temporary upload location [/tmp/tomcat. ...

  4. springboot文件上传下载简单使用

    springboot的文件上传比较简单 一.使用默认的Resolver:StandardServletMultipartResolver controller package com.mydemo.w ...

  5. springboot实现简单的文件上传

    承接上一篇,这里记录一下简单的springboot文件上传的方式 首先,springboot简单文件上传不需要添加额外的jar包和配置 这里贴一下后端controller层的实现代码 补一份前台的HT ...

  6. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  7. 补习系列(11)-springboot 文件上传原理

    目录 一.文件上传原理 二.springboot 文件机制 临时文件 定制配置 三.示例代码 A. 单文件上传 B. 多文件上传 C. 文件上传异常 D. Bean 配置 四.文件下载 小结 一.文件 ...

  8. springboot+web文件上传和下载

    一.首先安装mysql数据库,开启web服务器. 二.pom.xml文件依赖包配置如下: <?xml version="1.0" encoding="UTF-8&q ...

  9. springBoot(3)---目录结构,文件上传

    目录结构,文件上传 一.目录结构 1.目录讲解 src/main/java:存放代码      src/main/resources                   static: 存放静态文件, ...

随机推荐

  1. 如何通过sql语句完成分页?

    oracle select rownum,bookId from [rownum是伪列名,bookId是列名] (select rownum row_id,bookId from xiaoWJ_boo ...

  2. spring-boot 注解集合

    @Configuration 用于定义配置类,可替换XML配置文件,被注解的类内部包含一个或多个@Bean注解方法.可以被AnnotationConfigApplicationContext或者Ann ...

  3. Redis String Type

    Redis字符串的操作命令和对应的api如下: set [key] [value] JedisAPI:public String set(final String key, final String ...

  4. 数据分析之Numpy的基本操作

    Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1 创建 ndarray 使 ...

  5. 图灵机器人 V1 和 V2 接入方法

    API1.0使用方法: import requests import json import yuyinhecheng as hc def Tuling(words):     Tuling_API_ ...

  6. 学习笔记 - Sass的安装与使用手册

    最近因为工作需要,自学了Sass.现在将学习笔记整理在这里,供大家参考. 1. Sass的安装 Sass的编辑器安装方法有很多,大致能分为两种:应用程序(application)和命令行界面(comm ...

  7. CSS入门指南-4:页面布局

    这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...

  8. 微信小程序如何把接口调用成功的回调函数返回的参数return出去?(promise就可以解决)

    举个栗子//获取应用实例 //const app = getApp() //const util = require('../../utils/util.js') //const sign = uti ...

  9. JavaEE期末复习知识点总结

    JavaEE期末复习知识点总结 Java企业应用开发环境 Maven的基础概念 Maven是一个项目管理工具,可以对 Java 项目进行构建.依赖管理 Maven仓库 Maven 仓库是项目中依赖的第 ...

  10. [强网杯2019]upload buuoj

    提示:重点在这,可节省大部分时间 扫描后台 发现www.tar.gz备份文件. 这平台有429[太多请求限制]防护.dirsearch扫描一堆429.于是用了最笨的方法. 文件上传 先注册个账号 注册 ...