20150707 Created By BaoXinjian
一、摘要
1. 文件上传
首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。
2. 文件下载
这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框.
二、文件上传
1. 创建messageFileUpload空间,其类型为BLOB
2. 创建CO实现方法
作用1. 数据保存至VO Blob中
作用2. 将VO中Blob数据保存至server上
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("upload".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
File directory = new File("/u2/VIS/visappl/gavin/files");
if(!directory.exists()) {
directory.mkdirs();
}
String filename = empfilerow.getFileId().toString()+".txt";
File file = new File (directory + filename);
FileOutputStream outstream = new FileOutputStream(file);
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, length);
}
instream.close();
outstream.flush();
outstream.close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
三、文件下载
1. 创建一个MessageDown类型的空间,其会将附件显示在页面之上
2. 创建CO方法,将数据中的Blob数据通过或response保存至本地
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("download".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
response.addHeader("Content-Disposition", "attachment;filename="+ "gavin.txt");
response.setContentType("application/x-msdownload");
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
response.getOutputStream().write(buffer,0,length);
}
instream.close();
response.getOutputStream().flush();
response.getOutputStream().close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
四、测试上传下载文件
Test1. 文件上传测试
Step1. 将employee.txt上传至服务器上
Step2. 查看上传后,文本文件会分别保存至数据库和服务器上
Step3.1 上传至服务器上
Step3.2 上传至数据库中
Step4. 上传后显示在页面中
Test2. 文件下载测试
Step1. 文件下载
Step2. 文件下载后保存至数据库中
Thanks and Regards
20150707 Created By BaoXinjian
一、摘要
1. 文件上传
首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。
2. 文件下载
这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框.
二、文件上传
1. 创建messageFileUpload空间,其类型为BLOB
2. 创建CO实现方法
作用1. 数据保存至VO Blob中
作用2. 将VO中Blob数据保存至server上
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("upload".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
File directory = new File("/u2/VIS/visappl/gavin/files");
if(!directory.exists()) {
directory.mkdirs();
}
String filename = empfilerow.getFileId().toString()+".txt";
File file = new File (directory + filename);
FileOutputStream outstream = new FileOutputStream(file);
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, length);
}
instream.close();
outstream.flush();
outstream.close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
三、文件下载
1. 创建一个MessageDown类型的空间,其会将附件显示在页面之上
2. 创建CO方法,将数据中的Blob数据通过或response保存至本地
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("download".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
response.addHeader("Content-Disposition", "attachment;filename="+ "gavin.txt");
response.setContentType("application/x-msdownload");
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
response.getOutputStream().write(buffer,0,length);
}
instream.close();
response.getOutputStream().flush();
response.getOutputStream().close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
四、测试上传下载文件
Test1. 文件上传测试
Step1. 将employee.txt上传至服务器上
Step2. 查看上传后,文本文件会分别保存至数据库和服务器上
Step3.1 上传至服务器上
Step3.2 上传至数据库中
Step4. 上传后显示在页面中
Test2. 文件下载测试
Step1. 文件下载
Step2. 文件下载后保存至数据库中
Thanks and Regards
20150707 Created By BaoXinjian
一、摘要
1. 文件上传
首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。
2. 文件下载
这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框.
二、文件上传
1. 创建messageFileUpload空间,其类型为BLOB
2. 创建CO实现方法
作用1. 数据保存至VO Blob中
作用2. 将VO中Blob数据保存至server上
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("upload".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
File directory = new File("/u2/VIS/visappl/gavin/files");
if(!directory.exists()) {
directory.mkdirs();
}
String filename = empfilerow.getFileId().toString()+".txt";
File file = new File (directory + filename);
FileOutputStream outstream = new FileOutputStream(file);
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
outstream.write(buffer, 0, length);
}
instream.close();
outstream.flush();
outstream.close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
三、文件下载
1. 创建一个MessageDown类型的空间,其会将附件显示在页面之上
2. 创建CO方法,将数据中的Blob数据通过或response保存至本地
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
EmpManageAMImpl empAM = (EmpManageAMImpl) pageContext.getApplicationModule(webBean);
if ("download".equals(pageContext.getParameter(EVENT_PARAM))) {
try {
EmployeeFilesVOImpl empfilevo = empAM.getEmployeeFilesVO();
EmployeeFilesVORowImpl empfilerow = (EmployeeFilesVORowImpl) empfilevo.getCurrentRow();
BlobDomain blob = (BlobDomain) empfilerow.getEmployeeFile();
InputStream instream = blob.getBinaryStream();
HttpServletResponse response = (HttpServletResponse) pageContext.getRenderingContext().getServletResponse();
response.addHeader("Content-Disposition", "attachment;filename="+ "gavin.txt");
response.setContentType("application/x-msdownload");
int size = blob.getBufferSize();
byte[] buffer = new byte[size];
int length = 0;
while ((length = instream.read(buffer)) != -1) {
response.getOutputStream().write(buffer,0,length);
}
instream.close();
response.getOutputStream().flush();
response.getOutputStream().close();
empAM.getOADBTransaction().commit();
}catch(IOException ex) {
empAM.getOADBTransaction().rollback();
ex.printStackTrace();
}
}
}
四、测试上传下载文件
Test1. 文件上传测试
Step1. 将employee.txt上传至服务器上
Step2. 查看上传后,文本文件会分别保存至数据库和服务器上
Step3.1 上传至服务器上
Step3.2 上传至数据库中
Step4. 上传后显示在页面中
Test2. 文件下载测试
Step1. 文件下载
Step2. 文件下载后保存至数据库中
Thanks and Regards