slack excel webhook 코드

혜인·2023년 8월 22일
0
String webhookUrl = "webhook주소";
        String filePath = "파일경로";
        try {
            File file = new File(filePath);
            FileInputStream fileInputStream = new FileInputStream(file);
            byte[] fileBytes = new byte[(int) file.length()];
            fileInputStream.read(fileBytes);
            fileInputStream.close();
            String fileName = "계약 고객사.xlsx";

            // 파일을 베이스64로 인코딩
            String fileContent = Base64.getEncoder().encodeToString(fileBytes);

            // 파일 업로드를 위한 Slack 웹훅 API 호출
            URL url = new URL(webhookUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);

            // 파일 전송 정보 설정
            String boundary = "*****";
            connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);

            DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
            outputStream.writeBytes("--" + boundary + "\r\n");
            outputStream.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + fileName + "\"\r\n");
            outputStream.writeBytes("Authorization: Bearer 토큰값");
            outputStream.writeBytes("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n");
            outputStream.writeBytes("\r\n");

            // base64로 인코딩된 파일 데이터 전송
            byte[] encodingFileBytes = Base64.getDecoder().decode(fileContent);
            outputStream.write(encodingFileBytes);
            outputStream.writeBytes("\r\n");

            // Slack 웹훅 메시지 설정
            String message = "Excel 파일을 업로드합니다.";
            String json = "{\"text\": \"" + message + "\"}";

            // 메시지 데이터 전송
            outputStream.writeBytes("--" + boundary + "\r\n");
            outputStream.writeBytes("Content-Disposition: form-data; name=\"payload\"\r\n");
            outputStream.writeBytes("Content-Type: application/json\r\n");
            outputStream.writeBytes("\r\n");
            outputStream.write(json.getBytes("UTF-8"));
            outputStream.writeBytes("\r\n");

            // 마지막 boundary 추가
            outputStream.writeBytes("--" + boundary + "--\r\n");
            outputStream.flush();
            outputStream.close();

            // API 호출 결과 확인
            int responseCode = connection.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) {
                System.out.println("파일이 업로드되었습니다.");
            } else {
                System.out.println("파일 업로드에 실패했습니다. 응답 코드: " + responseCode);
            }

            connection.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        

0개의 댓글