package com.post;

import com.ruoyi.common.utils.uuid.UUID;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class UploadBatchTest {
    public static void main(String[] args) {
        //String filePath="C:/Users/706293/IT_onDuty.xls";
        String filePath = "C:\\test\\JAVAUploadTestFile.xlsx";
        String filePath2 = "C:\\test\\JAVAUploadTestFile.docx";
        String unid = UUID.fastUUID().toString();
        String unid2 = UUID.fastUUID().toString();
        // String unid="155555";
        DataOutputStream out = null;
        final String newLine = "\r\n";
        final String prefix = "--";
        try {
            URL url = new URL("http://localhost:8080/common/uploads");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            String BOUNDARY = "-------7da2e536604c8";
            conn.setRequestMethod("POST");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Charsert", "UTF-8");
            conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);

            out = new DataOutputStream(conn.getOutputStream());

            // 添加参数file1
            File file = new File(filePath);
            StringBuilder sb1 = new StringBuilder();
            sb1.append(prefix);
            sb1.append(BOUNDARY);
            sb1.append(newLine);
            sb1.append("Content-Disposition: form-data;name=\"files\";filename=\"" + file.getName() + "\"" + newLine);
            sb1.append("Content-Type:application/octet-stream");
            sb1.append(newLine);
            sb1.append(newLine);
            out.write(sb1.toString().getBytes());
            DataInputStream in = new DataInputStream(new FileInputStream(file));
            byte[] bufferOut = new byte[1024];
            int bytes = 0;
            while ((bytes = in.read(bufferOut)) != -1) {
                out.write(bufferOut, 0, bytes);
            }
            out.write(newLine.getBytes());
            in.close();

            // 添加参数file2
            File file2 = new File(filePath2);
            StringBuilder sb2 = new StringBuilder();
            sb2.append(prefix);
            sb2.append(BOUNDARY);
            sb2.append(newLine);
            sb2.append("Content-Disposition: form-data;name=\"files\";filename=\"" + file2.getName() + "\"" + newLine);
            sb2.append("Content-Type:application/octet-stream");
            sb2.append(newLine);
            sb2.append(newLine);
            out.write(sb2.toString().getBytes());
            DataInputStream in2 = new DataInputStream(new FileInputStream(file2));
            byte[] bufferOut2 = new byte[1024];
            int bytes2 = 0;
            while ((bytes2 = in2.read(bufferOut2)) != -1) {
                out.write(bufferOut2, 0, bytes2);
            }
            out.write(newLine.getBytes());
            in2.close();

            // 添加参数filePaths
            StringBuilder sb = new StringBuilder();
            sb.append(prefix);
            sb.append(BOUNDARY);
            sb.append(newLine);
            sb.append("Content-Disposition: form-data;name=\"filePaths\"");
            sb.append(newLine);
            sb.append(newLine);
            sb.append("{\"key\":\"filePaths\", \"description\":\"\", \"type\":\"file\", \"enabled\":true, \"value\":[\"C:\\\\test\\\\JAVAUploadTestFile.xlsx\", \"C:\\\\test\\\\JAVAUploadTestFile.docx\"]}");
            out.write(sb.toString().getBytes());


            //添加参数subject
            StringBuilder sb3 = new StringBuilder();
            sb3.append(newLine);
            sb3.append(prefix);
            sb3.append(BOUNDARY);
            sb3.append(newLine);
            sb3.append("Content-Disposition: form-data;name=\"subject\"");
            sb3.append(newLine);
            sb3.append(newLine);
            sb3.append("邮件名称");
            out.write(sb3.toString().getBytes());

            // 添加参数content
            StringBuilder sb4 = new StringBuilder();
            sb4.append(newLine);
            sb4.append(prefix);
            sb4.append(BOUNDARY);
            sb4.append(newLine);
            sb4.append("Content-Disposition: form-data;name=\"content\"");
            sb4.append(newLine);
            sb4.append(newLine);
            sb4.append("邮件内容");
            out.write(sb4.toString().getBytes());

            byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();
            // 写上结尾标识
            out.write(end_data);
            out.flush();
            out.close();

            // 定义BufferedReader输入流来读取URL的响应
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
//{"msg":"操作成功","urls":"http://localhost:8080/upload/2024/01/22/JAVAUploadTestFile_20240122155116A001.xlsx,http://localhost:8080/upload/2024/01/22/JAVAUploadTestFile_20240122155116A002.docx","code":200,"newFileNames":"JAVAUploadTestFile_20240122155116A001.xlsx,JAVAUploadTestFile_20240122155116A002.docx","fileNames":"/upload/2024/01/22/JAVAUploadTestFile_20240122155116A001.xlsx,/upload/2024/01/22/JAVAUploadTestFile_20240122155116A002.docx","originalFilenames":"JAVAUploadTestFile.xlsx,JAVAUploadTestFile.docx"}

            }

        } catch (Exception e) {
            System.out.println("发送POST请求出现异常！" + e);
            e.printStackTrace();
        }
    }
}
