泛微E9 OA 二次开发下载流程及建模表单中的附件可以通过以下方式进行实现。
private InputStream getFileByDocId(String offerFileId) throws Exception {
InputStream inputStream = null;
BufferedInputStream bufferedInputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
String filepath = null;
String iszip = null;
String isencrypt = null;
String aescode = null;
RecordSet rs = new RecordSet();
rs.executeQuery("SELECT a.imagefilename,a.filerealpath,a.iszip,a.imagefiletype,a.isaesencrypt,a.aescode FROM ImageFile a WHERE (imagefileid in(SELECT imagefileid FROM DocImageFile WHERE (docid = '" + offerFileId + "')))");
if (rs.next()) {
filepath = rs.getString("filerealpath");
iszip = rs.getString("iszip");
isencrypt = rs.getString("isaesencrypt");
aescode = rs.getString("aescode");
}
File file = new File(filepath);
if ("1".equals(iszip)) {
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));
if (zipInputStream.getNextEntry() != null) {
bufferedInputStream = new BufferedInputStream(zipInputStream);
}
} else {
bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
}
byte[] arrayOfByte = new byte[1024];
byteArrayOutputStream = new ByteArrayOutputStream();
int n;
while ((n = bufferedInputStream.read(arrayOfByte)) != -1) {
byteArrayOutputStream.write(arrayOfByte, 0, n);
byteArrayOutputStream.flush();
}
byte[] arrayOfByte1 = byteArrayOutputStream.toByteArray();
inputStream = new ByteArrayInputStream(arrayOfByte1);
if (isencrypt.equals("1")) {
inputStream = AESCoder.decrypt(inputStream, aescode);
}
return inputStream;
}