基于Base64上传Excel文件

news/2024/7/21 7:52:41 标签: excel

1.导入依赖

 <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.8.12</version>
    </dependency>

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
    </dependency>

2、后端代码

private static  String fileUrl = "D:/software/nginx-1.23.4/html/";

 public String upload(@RequestBody UploadInfo uploadInfo) {

        String name = uploadInfo.getName();
        String[] imgData = StrUtil.splitToArray(uploadInfo.getBase64(), "base64,");
        byte[] bytes = Base64.decode(imgData[1]);
        name =  IdUtil.fastSimpleUUID() + "_" + name;
        FileUtil.writeBytes(bytes,"D:/software/nginx-1.23.1/html/images/"+name);
       String ext  = FileUtil.getSuffix(name);
 
        switch (ext) {
            case "mp4":
               fileUrl = fileUrl + "video/"+name;        
                break;
            default: ;
               fileUrl = fileUrl + "images/"+name;
                break;
        }


        return "http://img.207.com/images/"+name;
    }

3.前端代码

const onChange = (uploadFile: any, uploadFiles: any) => {
    uploadData.name = uploadFile.name
    console.log(uploadData.name)
    const file = uploadFile.raw
    let reader = new FileReader()
    reader.readAsDataURL(file)
    reader.onload = () => {
        uploadData.base64 = reader.result
        callUploadApi()
    }
}
const callUploadApi = () => {

    uploadApi.upload.call({ name: uploadData.name, base64: uploadData.base64 }).then((res: any) => {

        imageUrl.value = getFileImg(res.data)
    })
}
const getFileImg = (url: string) => {
    let ext = url.split('.')[url.split('.').length - 1]
    switch (ext) {
        case "xlsx":
            return "data:image/png;base64,xxxx"
            break;
        default:
            return url
    }
}
</script>

4.使用原生javascript


<input type="file" onchange="upload(event)">
<script>
    function upload(e) {
        let file = e.target.files[0];
        let reader = new FileReader()
        reader.readAsDataURL(file)
        reader.onload = () => {
            console.log(reader.result);
        }
    }
</script>

http://www.niftyadmin.cn/n/5439032.html

相关文章

Unity构建详解(2)——SBP的初始设置和脚本编译

【SwitchToBuildPlatform】 核心逻辑如下 EditorUserBuildSettings.SwitchActiveBuildTarget(m_Parameters.Group, m_Parameters.Target); 直接调用切换平台的接口&#xff0c;一般来说&#xff0c;这个步骤不会执行&#xff0c;我们打包时肯定会事先将平台切换好的 【Rebu…

WebSocket 和SSE的区别以及优缺点

WebSocket 和 Server-Sent Events&#xff08;SSE&#xff09;都是用于实现服务器向客户端推送消息的技术&#xff0c;但它们有一些重要的区别&#xff1a; 1.双向 vs 单向&#xff1a;WebSocket 是全双工的&#xff0c;这意味着服务器和客户端可以同时发送和接收消息。而 SSE …

视觉信息处理和FPGA实现第5次作业-Matlab实现图像逆时针旋转90度

一、Matlab2022a安装 链接&#xff1a;https://pan.quark.cn/s/6e177bc7c11d 提取码&#xff1a;dKNN 二、Matlab使用 2.1 新建一个脚本文件&#xff08;.m文件&#xff09; 2.2 另存为到便于归档的地方 考虑到.m文件如果不是全英文路径&#xff0c;也有可能会出问题&#…

pgsql 9.6版本,搜索全库,某个字段的数据包含了这个值 LIUWEI

数据库执行脚本 DO $$ DECLARE table_record record; BEGIN FOR table_record IN ( SELECT table_name, column_name FROM information_schema.columns WHERE data_type IN (text, varchar, character varying) -- 可根据实际情况调整数据类型范围 AND table_schema public --…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;隐藏层 &#xff08;二&#xff09;泛化 &#xff08;三…

官宣|Apache Flink 1.19 发布公告

Apache Flink PMC&#xff08;项目管理委员&#xff09;很高兴地宣布发布 Apache Flink 1.19.0。与往常一样&#xff0c;这是一个充实的版本&#xff0c;包含了广泛的改进和新功能。总共有 162 人为此版本做出了贡献&#xff0c;完成了 33 个 FLIPs、解决了 600 多个问题。感谢…

OpenAI的语言生成器GPT-3受到了广泛关注。

OpenAI的第三代语言生成器GPT-3备受关注 概述 OpenAI&#xff0c;一家由Peter Thiel、Elon Musk、Reid Hoffman、Marc Benioff和Sam Altman等知名人士支持的非营利人工智能研究公司&#xff0c;最近发布了其第三代语言预测模型GPT-3。GPT-3的发布受到了早期用户的高度关注。 …

安装tensorflow2.4

服务器安装tensorflow2.4版本 首先&#xff0c;创建tensorflow2.4环境。Conda create -n tensorflow2.4 python3.9激活环境。conda activate tensorflow2.4然后&#xff0c;安装tensorflow-gpu版本。conda install tensorflow-gpu2.4。注意不能使用pip 安装。检查是否安装成功…