Magic-api 升阶,response,request 文件上传下载的处理

Magic-api 升阶,response,request 文件上传下载的处理

​ 按照官方文档。

​ request、response的处理

​ 介绍的很笼统。
在这里插入图片描述

​ 查了一下网上的资料,确实可用的比较少。正好项目有excle 上传下载,图片的上传,花了一个礼拜研究了一下,部分源码,所以为了节约开发coder的时间。将我的应用讲一个大概的思路,就不会迷糊了。

有两个方向:
第一个是magicapi自带的部分封装接口,是在慢慢后面研究中发现的,对response、request做了封装。如下图,没用过。

在这里插入图片描述

第二个是直接使用response、request。就直接实现了。

第一步。首先按照官方文档。基本不能满足自己的业务需求。

业务需求,导出EXCLE,需要用到getOutputStream 这个api

在这里插入图片描述

这是源码里面的对象。 拿到这个对象之后,返回OutputStream对象。
在这里插入图片描述

第二步:

编写自定义函数了。

在这里插入图片描述

​ 下面就是java的实现, 同上直接上java代码和完整的magic-api脚本。当然有自定义的java工具类,网上示例代码很多,就不上了。

@Component
@Slf4j
public class FileCustomModule implements MagicModule, CustomModule {

    @Override
    public void downloadExcle(OutputStream os, List titles, List values) throws Exception {
        try {
            if (CollectionUtils.isEmpty(values)) {
                values = new ArrayList();
            }
            ExcelUtil.exportExcel(os, titles, values);
        } catch (Exception e) {
            log.error("download method error", e);
        }
    }

    @Override
    public List upExcle(MultipartFile quest) {
        try {
            return ExcelUtil.getFileData(quest);
        } catch (Exception e) {
            log.error("download method error", e);
        }
        return null;
    }


    @Override
    public List upPicture(List<MultipartFile> quests, String path) {
        List listReturn = new ArrayList();
        try {

            String name, fullName;
            if (CollectionUtils.isEmpty(quests)) {
                return listReturn;
            }
            for (MultipartFile quest : quests) {
                name = quest.getOriginalFilename();
                fullName = FileCustomUtil.writeFile(quest.getInputStream(), path + name);
                listReturn.add(fullName);
            }
            return listReturn;
        } catch (Exception e) {
            log.info("error=>", e);
        }
        return listReturn;
    }


    @Override
    public String getModuleName() {
        return "file";
    }

    public static void main(String[] args) {
        String a = "[2022-01-25_1643091918939_自动引入插件核心机制.png]";
        String phoneIdList = StringUtils.strip(a, "[]");
        List l = Arrays.asList(phoneIdList.split(","));
        System.out.println(l);
    }
}
import response;
import request;
import file;
import log;
import "java.net.URLEncoder"
import "org.apache.commons.lang3.StringUtils";
import "com.alibaba.fastjson.JSONObject";


var fileName="维保记录_"+date_format(new Date(),"yyyy-MM-dd");
fileName=URLEncoder.encode(fileName, "UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
return file.downloadExcle(response.getOutputStream(),title,resultValues);

​ 放出部分java代码和完整的magic-pai脚本。

​ 以上是excle导出。可以换成PDF/CVS等。

第二个需求是导入excle了。

同上java代码和完整的magic-api脚本。当然有自定义的java工具类。

import "com.alibaba.fastjson.JSONObject";
import response;
import request;
import file;
import log;
import "java.lang.String";
import "org.apache.commons.lang3.StringUtils";
import "org.springframework.util.CollectionUtils";
import "java.util.UUID";
import "java.lang.StringBuffer";

var quest=request.getFile("file")
var resultList=file.upExcle(quest);
log.info("resultList {}",resultList)

第三个需求,图片上传,java代码同上。

import file;
import log;
import "java.lang.String";
import "org.apache.commons.lang3.StringUtils";
import "org.springframework.util.CollectionUtils";
import "java.util.UUID";
import "java.lang.StringBuffer";

var suf=date_format(new Date(),"yyyy-MM-dd");
var pathWindows="C:\Users\Longshine\Desktop\mqtt_test\picture\\"+suf;
var pathLinux="/app/bigscreen_picture/"+suf;
var quest=request.getFiles("file");
var name=file.upPicture(quest,pathLinux);
log.info("name {}",name);
log.info("name1 {}",name);
return  name;

以上是大概的一个思路,其他的java具体的文件实现类太多了。就不写上去了。 欢迎留言。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程小明的coding

你的打赏是我研究最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值