OA接收FORM_DATA格式的接口实例

gogozz / 2024-09-25 / 原文

作用:同时接收json参数和文件stream

 

1、代码示例

package com.test;


import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Path("/srm")
public class ApiTest {
    @POST
    @Path("/saveOrUpdateGysfk")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public String saveOrUpdateGysfk(@Context HttpServletRequest var1, @Context HttpServletResponse var2) throws IOException, FileUploadException {
        boolean isMultipart = ServletFileUpload.isMultipartContent(var1);
        if (isMultipart) {
            // 配置上传参数
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            int i = 0;
            ArrayList<String> arrayList = new ArrayList<String>();
            String docID = "";
            String requestid = "";
            String maindate = "";
            String userid = "";
            HashMap<String, InputStream> stringInputStreamHashMap = new HashMap<>();

            // 解析请求的内容提取文件数据
            List<FileItem> formItems = upload.parseRequest(var1);
            if (formItems != null && formItems.size() > 0) {
                // 迭代表单数据
                for (FileItem item : formItems) {
                    // 处理不在表单中的字段(字节字段)
                    if (!item.isFormField()) {
                        String fileName = new File(item.getName()).getName();
                        stringInputStreamHashMap.put(fileName,item.getInputStream());
                    }
                    // 处理表单字段
                    else {
                        String name = item.getFieldName();
                        String value = new String(item.getString().getBytes("ISO8859_1"),"utf-8");
                        if("requestid".equals(name)){
                            requestid= value;
                        }
                        if("maindate".equals(name)){
                            maindate= value;
                        }
                        if("userid".equals(name)){
                            userid= value;
                        }
                        // ... 处理字段数据
//                        LogUtil.log("sap","sap").info("OcrCreateOa name:"+name);
//                        LogUtil.log("sap","sap").info("OcrCreateOa value:"+value);
                    }
                }
            }
        }
        return null;
    }
}

 

2、请求示例