文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug

news2024/11/15 17:57:10

1.文件批量上传

    @ApiOperation(value = "文件批量上传")
    @PostMapping("/multipleImageUpload")
    @Transactional(rollbackFor = Exception.class)
    public Result multipleImageUpload(@ApiParam(name = "files",value = "文件",required = true) @RequestParam("files") MultipartFile[] files) {
        System.out.println("上传的图片数"+files.length);
        List<String> imageList = new ArrayList<>();
        for (MultipartFile file : files) {
            if (!file.getContentType().startsWith("image/")) {
                return new Result(4000, "只允许上传图片文件");
            }
            String filename = file.getOriginalFilename();
            String uploadUrl = OssUtils.upload(file,filename);
            imageList.add(uploadUrl);
        }
        if (imageList.isEmpty()){
            return new Result(4001,"您未上传图片");
        }
        return new Result(2000,"图片批量上传成功",imageList);
    }

1.1多文件上传时使用数组 MultipartFile[ ] files  

其中要加上@RequestParam("files") files 要和 参数列表中的参数名称一致

这类似于springMVC架构 添加web 依赖

若传入文件 会把请求头改为 multipart

1.2大坑 

由于swagger2.xx 版本 不支持多文件上传,仅支持单文件上传,多文件上传时会报错 500

2.使用时间戳进行oss上传

 public static String upload(MultipartFile file, String path) {
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey);
        try {
            //创建唯一图片名称 + 唯一的时间戳
            String timeStampPath = addTimeStampToPath(path);

            // 创建PutObject请求。
            ossClient.putObject(bucketName, timeStampPath, file.getInputStream());
            String url = ossUrl + "/" + timeStampPath;
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }

才开始我企图对url 进行操作 后来才发现没有啥卵用 

因为主要是通过这里面的路径来连接的 

2.1进行时间戳的拼接

    private static String addTimeStampToPath(String path) {
        String fileName = path;
        //获取文件拓展名
        String extension = "";
        int dotIndex = path.lastIndexOf(".");
        if(dotIndex > 0){
            extension = path.substring(dotIndex);
            fileName = path.substring(0,dotIndex);
        }
        //获取当前时间戳
        String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        return fileName +"_"+ timeStamp + extension;
    }

返回的时文件名+时间戳 
3.近日发现的一些bug

3.1当我的状态为0时,一查询就会查出来所有的状态值

本来是这样写的,if test ="status != null and status != '' " 这样的话传入0就会查找所有的值 
why?

想想原因应该是这样的 : 当你加入 status != "" 时,mybatis 可能会把status 判定为字符串。那 0 就是空 直接省略该选项 

3.2条件查询时已添加不查询下架的条件 但仍能查询到 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024新型数字政府综合解决方案(六)

新型数字政府综合解决方案通过融合人工智能、大数据、区块链和云计算技术&#xff0c;构建了一个全方位智能化的政务平台&#xff0c;旨在提升政府服务的效率、透明度和公众参与度。该方案实现了跨部门的数据互联互通与实时更新&#xff0c;利用先进的数据分析和自动化处理技术…

38-PCB布局实战实战及优化

1.先对布局好的器件进行锁定 1.根据模块化布局 2.电容尽量靠近ic附近&#xff0c;可以起到很好的滤波效果 3.复位按键尽量摆在容易按键的地方&#xff0c;比如周围 。。。。 最后进行对齐

KubeSphere 社区双周报| 2024.08.02-08.15

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2024.08.02-08.15…

机器学习(2)-- KNN算法之手写数字识别

KNN算法 KNN&#xff08;K-Nearest Neighbor&#xff0c;K最近邻&#xff09;算法是一种用于分类和回归的非参数统计方法&#xff0c;尤其在分类问题中表现出色。在手写数字识别领域&#xff0c;KNN算法通过比较测试样本与训练样本之间的距离&#xff0c;找到最近的K个邻居&am…

智能监控,无忧仓储:EasyCVR视频汇聚+AI智能分享技术为药品仓库安全保驾护航

随着科技的飞速发展&#xff0c;药品仓库的安全管理正迎来前所未有的变革。药品作为直接关系到公众健康的重要物资&#xff0c;其安全存储和监管显得尤为重要。在这个背景下&#xff0c;视频汇聚平台EasyCVR视频智能管理系统的应用&#xff0c;为药品仓库的安全监管提供了强有力…

【Bug记录】友元函数不能访问私有成员?

项目场景&#xff1a; 问题源码&#xff1a; class Person { public:friend void Display(const Person& p, const Student& s);protected:string _name "1"; // 姓名 };class Student : public Person { protected:string _s "2"; };void Disp…

HTML静态网页成品作业(HTML+CSS)——自行车介绍网页设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码CSS部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 &#x1…

在业务增长、风险管理和网络安全之间取得平衡

疫情过后&#xff0c;商业环境和文化发生了重大变化&#xff0c;值得我们仔细考虑。我们都变得更加依赖技术&#xff0c;我们的工作方法也发生了变化&#xff0c;网络风险变得更加突出和持久。 监管领域变得更加积极和严格&#xff0c;特别是在安全和数据隐私问题方面。人工智…

OpenCV图像滤波(18)空间梯度计算函数spatialGradient()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算图像在x和y两个方向上的一阶导数&#xff0c;使用Sobel算子。 等价于调用&#xff1a; Sobel( src, dx, CV_16SC1, 1, 0, 3 ); Sobel( src,…

AI赋能软件测试:从自动化到智能化,让测试工作事半功倍

引言 在当今这个日新月异的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;正以不可阻挡之势渗透并重塑着各行各业&#xff0c;其中&#xff0c;软件开发与测试领域更是迎来了前所未有的变革。随着软件系统的复杂性日益增加&#xff0c;用户对软件质量、性能及安全性的…

全息光存储技术能否取代硬盘?

随着云计算的迅猛发展及其支持的应用程序的日益丰富&#xff0c;现有数据存储技术面临着前所未有的挑战。目前&#xff0c;云存储主要依赖于固态硬盘&#xff08;SSD&#xff09;和硬盘驱动器&#xff08;HDD&#xff09;。其中&#xff0c;HDD因其成本低廉&#xff0c;在大容量…

LVGL系列2--linux + lvglv8 + vscode 移植

LVGL系列 一、LVGL移植 LVGL系列1–AT32移植LVGL_V8具体步骤 LVGL系列2–linux lvglv8 vscode 移植 二、输入设备 LVGL系列3–纯物理(外部)按键&#xff0c;数字键盘控制控件 文章目录 LVGL系列一、LVGL移植二、输入设备 一、新建文件夹并克隆源码官方仓库 7.11.0官方仓库…

BL196MQTT远程IO模块助力智能楼宇自动化升级

在智能楼宇自动化领域&#xff0c;每一个细节的优化都能带来整体效率与舒适度的显著提升。钡铼技术的BL196MQTT远程IO模块&#xff0c;以其卓越的灵活性和强大的性能&#xff0c;正在成为这一领域中推动楼宇自动化升级的关键力量。 钡铼技术IOy系列&#xff1a;创新与灵活性的…

R语言统计分析——OLS回归2

参考资料&#xff1a;R语言实战【第2版】 1、简单线性回归 本例使用R语言中基础安装中的数据集women&#xff0c;来通过身高预测体重&#xff0c;获得一个等式帮助我们分辨出那些过重或过轻的个体。 # 拟合数据 fit<-lm(weight~height,datawomen) # 查看数据拟合结果 summ…

HTTPS通讯全过程

HTTPS通讯全过程 不得不说&#xff0c;https比http通讯更加复杂惹。在第一次接触https代码的时候&#xff0c;不知道为什么要用用证书&#xff0c;公钥是什么&#xff1f;私钥是什么&#xff1f;他们作用是什么&#xff1f;非对称加密和对称加密是啥&#xff1f;天&#xff0c;…

Redis 单线程为何还能处理速度那么快?

Redis 单线程为何还能处理速度那么快&#xff1f; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Redis&#xff0c;作为一款单进程单线程的内存型数据库&#xff0c;其卓越的处理速度令人印象深刻。那么&#xff0c;它是如何实现这一点的呢…

用Python实现9大回归算法详解——05. 梯度提升回归(Gradient Boosting Regression)

1. 梯度提升回归的基本概念 1.1 什么是梯度提升&#xff1f; 梯度提升是一种集成学习方法&#xff0c;通过组合多个弱学习器来构建一个强大的预测模型。在梯度提升框架中&#xff0c;每个弱学习器都试图修正前一个模型的错误。与简单的加法模型不同&#xff0c;梯度提升通过逐…

基于YOLOv8的缺陷检测任务模型训练

文章目录 一、引言二、环境说明三、缺陷检测任务模型训练详解3.1 PCB数据集3.1.1 数据集简介3.1.2 数据集下载3.1.3 构建yolo格式的数据集 3.2 基于ultralytics训练YOLOv83.2.1 安装依赖包3.2.2 ultralytics的训练规范说明3.2.3 创建训练配置文件3.2.4 下载预训练模型3.2.5 训练…

Android逆向题解攻防世界-easy-apk

Jeb反编译apk 题目比较简单&#xff0c;就是一个改了码表的base64编码。 protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(0x7F04001B); // layout:activity_main((Button)this.findViewById(0x7F0B0076)).set…

在已经装过Tomcat机子运行war包

1 检查防火墙&#xff0c;验证是否装有jdk,是否配置有JAVA_HOME: ls /usr/apache-tomcat-9.0.52/webapps/ROOT rm -rf /usr/apache-tomcat-9.0.52/webapps/ROOT* ls /usr/apache-tomcat-9.0.52/webapps/ROOT cd /usr/apache-tomcat-9.0.52/webapps/ROOT ls 把war包拉到ROOT…