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();
}