泛微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;
	}

以上代码中的参数offerFileId为附件字段保存在数据库中的id,该方法返回的结果为附件InputStream,你可以依照自己的需求来返回对应的附件结果,例如保存在本地等等。

如果有疑问可以留言交流~

更多推荐