菜鸟笔记
提升您的技术认知

java 文件上传同时携带参数-ag真人游戏

单独进行文件上传的方式常用multipartfile,但并不能携带其它参数:

使用multiparthttpservletrequest可将文件、参数以键值形式包装起来,传送至controller。

例:

接口:

@requestmapping(value = "/createticket", method = requestmethod.post)
@apioperation(value = "新建工单", notes = "新建工单")
@responsebody
public commonresultbo createticket(multiparthttpservletrequest request) {
  
    log.info("createticket begin.");
    try {
  
        ticketinfo ticketinfo = getticketinfo(request);
        ticketinfo.setstatus("已派发");
        return ticketinfoservice.insertticket(ticketinfo);
    } catch (exception exc) {
  
        exc.printstacktrace();
        log.error("createticket error: "   exc.getmessage());
        return commonresultbo.init(null, -1, "createticket failed.");
    }
}
/**
 * 功能描述 储存文件 获取工单信息类对象
 *
 * @param request 页面传参
 * @return 工单信息类对象
 */
private ticketinfo getticketinfo(multiparthttpservletrequest request) {
  
    string ticketinfos = request.getparameter("ticketinfos"); // 通过前后端约定的参数名获取参数,这里是json字符串
    list files = request.getfiles("file"); // 通过前后端约定的参数名获取参数,这里是文件,getfile获取单个文件,getfiles获取多														  // 个文件
    // 保存工单文件
    string path;
    path = this.readfile(files); // 文件读取
    // setfilepath
    ticketinfo ticketinfo = jsonobject.parseobject(ticketinfos, ticketinfo.class); // 将获取到的json字符串转化为业务实体类
    ticketinfo.setfilepath(path);
    return ticketinfo;
}
/**
 * 功能描述 读取文件
 *
 * @param files 文件集
 * @return 文件路径
 */
private string readfile(list files) {
  
    log.info("begin to read file.");
    list paths = new arraylist<>();
    for (multipartfile file : files) {
  
        string path;
        try {
  
            if (file.isempty()) {
  
                log.info("file empty.");
            }
            // 获取文件名
            string filename = file.getoriginalfilename();
            log.info("上传的文件名为:"   filename);
            // 获取文件的后缀名
            string suffixname = null;
            if (filename != null) {
  
                suffixname = filename.substring(filename.lastindexof("."));
            }
            log.info("上传的后缀名为:"   suffixname);
            // 文件上传后的路径
            string filepath = "d:\\download\\file\\";
            path = filepath   filename;
            file dest = new file(path);
            // 检测是否存在目录
            if (!dest.getparentfile().exists()) {
  
                dest.getparentfile().mkdirs();
            }
            // 写入文件
            file.transferto(dest); // multipartfile中封装了一个非常简单的方法transferto(file file),此处只能存放绝对路径,否则会导致读取异常,
            					   // 个人还未遇到过。可以用传统方式来替换。
        } catch (ioexception exception) {
  
            exception.printstacktrace();
            log.error("createticket error, file transfer error: "   exception.getmessage());
            return null;
        }
        path = path.replace("\\", "\\\\");
        paths.add(path);
    }
    return string.join(",", paths);
}

postman请求:

参数格式以form-data形式传递。

网站地图