package com.nexacro.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletResponse;
import com.nexacro.java.xapi.data.DataSet;
import com.nexacro.java.xapi.data.PlatformData;
import com.nexacro.java.xapi.data.VariableList;
import com.nexacro.java.xapi.tx.HttpPlatformResponse;
import com.nexacro.java.xapi.tx.PlatformType;
import com.nexacro.java.xeni.extend.XeniExcelDataStorageBase;
import com.nexacro.java.xeni.util.CommUtil;
/*
제니 엑셀 다운로드 호풀 관련
- HTTPS 통신 하나, 제니에서는 HTTP 로 호출
답변
1. 개발 환경에서 proxy나 web server를 통할 경우 xeni를 호출할때 http로 호출되는 것이 아닌지 확인이 필요해 보입니다.
2. 아래와 같이 'export-url' 설정을 통해 url를 고정 시킬 수 있습니다.
web.xml 설정
export-url : "https://dev.tobesoft.com/xeni/ExportImport.do"
<context-param>
<param-name>export-url</param-name>
<param-value>https://dev.tobesoft.com/xeni/ExportImport.do</param-value>
</context-param>
export 파일 경로 지정시
<context-param>
<param-name>export-path</param-name>
<param-value>file:///temp/export</param-value>
</context-param>
*/
public class XeniExtend implements XeniExcelDataStorageBase {
/**
* read excel file
*/
public InputStream loadTargetStream(String filepath) throws Exception {
File file = new File(filepath);
return new FileInputStream(file);
}
/*
확장 클래스를 이용해 다운로드 URL을 사용자가 지정하는 방법을 사용합니다
1. nexacro 화면에서 호출하는 도메인 정보를 variable list에 담아 전달.
ex) exportObj.exportData("requesturl=" + url);
*/
public String saveImportStream(VariableList varlist,
InputStream in,
String filepath) throws Exception {
int nIdx = filepath.lastIndexOf("/");
String sPath = filepath.substring(0, nIdx);
File file = new File(sPath);
if (file.exists() == false) {
file.mkdirs();
}
// write input stream to file
//
OutputStream out = new FileOutputStream(filepath);
byte[] buf = new byte[1024];
int length = 0;
while ((length = in.read(buf)) > 0) {
out.write(buf, 0, length);
}
out.flush();
out.close();
in.close();
return null;
}
public int saveExportStream(VariableList varlist,
DataSet dscmd,
ByteArrayOutputStream out,
String filepath, String fileurl,
HttpServletResponse response) throws Exception {
String strUrl = varlist.getString("ExtUrl");
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> strUrl : " + strUrl);
fileurl = fileurl.split("://")[1];
int idx = fileurl.indexOf("/");
fileurl = "https://"
+ strUrl
+ fileurl.substring(idx);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> fileurl : " + fileurl);
int nIdx = filepath.lastIndexOf("/");
String sPath = filepath.substring(0, nIdx);
File file = new File(sPath);
if (file.exists() == false) {
file.mkdirs();
}
FileOutputStream fout = new FileOutputStream(filepath);
fout.write(out.toByteArray());
fout.close();
out.close();
DataSet dsRes = CommUtil.getDatasetExportResponse(dscmd);
PlatformData resData = new PlatformData();
VariableList varList = resData.getVariableList();
varList.add("ErrorCode", 0);
varList.add("ErrorMsg", "SUCCESS");
dsRes.set(0, "url", fileurl);
resData.addDataSet(dsRes);
HttpPlatformResponse platformRes = new HttpPlatformResponse(
response, PlatformType.CONTENT_TYPE_SSV, "UTF-8");
platformRes.setData(resData);
platformRes.sendData();
return 0;
}
@Override
public DataSet saveExportStream(com.nexacro.java.xapi.data.VariableList arg0,
com.nexacro.java.xapi.data.DataSet arg1, ByteArrayOutputStream arg2, String arg3, String arg4)
throws Exception {
// TODO Auto-generated method stub
return null;
}
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
212 | 안드로이드 생체 인식 인증 샘플 | 묵묵이 | 2024.12.19 | 0 |
211 | Webbrowser 버전은 아래와 같이 변경 | 묵묵이 | 2024.04.28 | 1 |
210 | HttpURLConnection 이용한 통신 / 파일 다운로드 | 묵묵이 | 2024.03.14 | 0 |
209 | [Spring Boot] Gradle 로 빌드 하는 법 | 묵묵이 | 2024.02.08 | 0 |
208 | Gradle 프로젝트 설정 | 묵묵이 | 2024.02.08 | 0 |
207 | document.baseURI 를 지원하지 않는 이슈 | 묵묵이 | 2024.01.23 | 0 |
206 | ios WkWebview 개발자 모드에서 로그를 볼수 없는 현상 | 묵묵이 | 2023.12.21 | 0 |
205 | Cordova(코르도바) 설치, 프로젝트 생성 | 묵묵이 | 2023.12.14 | 0 |
204 | 웹뷰(WebView) 사용법 | 묵묵이 | 2023.12.13 | 0 |
203 | 안드로이드 기본값으로 휴대폰 기울기에 따라 자동회전 막기 | 묵묵이 | 2023.12.13 | 0 |
202 | 화면모드로 전환시 WebView가 리로드되는 현상 | 묵묵이 | 2023.12.13 | 0 |
» | xeni 엑셀 다운로드 관련 | 묵묵이 | 2023.12.08 | 2 |
200 | CKeditor4 를 이용한 게시판 글쓰기 구현 및 사진 업로드 [1] | 묵묵이 | 2023.11.23 | 1 |
199 | Jenkins REST API 호출로 Job 생성/실행/결과조회 하기 | 묵묵이 | 2023.09.22 | 1 |
198 | 키보드 변경시 앱 재시동 현상 | 묵묵이 | 2023.09.09 | 0 |
197 | Tomcat(톰캣)에서 HTTP/2 (HTTP 2.0) 사용하기 | 묵묵이 | 2023.08.08 | 7 |
196 | Eclipse Git Merge Conflict 해결 방법 [1] | 묵묵이 | 2023.07.27 | 1 |
195 | 유튜브 무료 영화 | 묵묵이 | 2023.07.24 | 0 |
194 | Git 줄 끝을 처리하도록 Git 구성 2 [2] | 묵묵이 | 2023.07.20 | 2 |
193 | 빌라가배 Villagabae - 풀빌라 거제 | 묵묵이 | 2023.07.18 | 0 |