文件上传
首先建立用于存放附件的临时视图对象(View Object),包含Blob类型的视图属性(View Attribute),建立页面包含messageFileUpload类型的Item,并创建页面的控制器。
在控制器的processFormRequest中编写以下代码:
try
{
OAViewObject vo = (OAViewObject)am.findViewObject("FileVO1");
Row row = vo.getCurrentRow();
String filePath = "/u01/demo10/demo10comn/temp/";
BlobDomain blob = (BlobDomain)row.getAttribute("FileData");
File f = new File(filePath + (String)row.getAttribute("FileName"));
InputStream is = blob.getBinaryStream();
FileOutputStream fos = new FileOutputStream(f);
int size=blob.getBufferSize();
byte[] buffer=new byte[size];
int len;
while((len=is.read(buffer)) != -1)
{
fos.write(buffer,0,len);
}
is.close();
fos.flush();
fos.close();
}
catch(IOException ex)
{
ex.printStackTrace();
System.out.println(ex.getMessage());
}
文件下载
这里要实现的功能是当单击附件链接时,能自动打开附件保存对话框,代码如下:
try
{
OAViewObject vo = (OAViewObject)am.findViewObject("FileVO1");
Row row = vo.getCurrentRow();
BlobDomain blob = (BlobDomain)row.getAttribute("FileData");
HttpServletResponse response = (HttpServletResponse)pageContext.getRenderingContext().getServletResponse();
response.addHeader("Content-Disposition", "attachment;filename="+ (String)row.getAttribute("FileName"));
response.setContentType("application/x-msdownload");
InputStream is = blob.getBinaryStream();
int size=blob.getBufferSize();
byte[] buffer=new byte[size];
int len;
while((len=is.read(buffer)) != -1)
{
response.getOutputStream().write(buffer,0,len);
}
is.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch(IOException ex)
{
ex.printStackTrace();
System.out.println(ex.getMessage());
}
作者“红豆加奶”