com.zhuozhengsoft.pageoffice
类 FileSaver

java.lang.Object
  继承者 com.zhuozhengsoft.pageoffice.FileSaver

public class FileSaver
extends java.lang.Object

FileSaver 类用来接收并保存 PageOfficeCtrl 或 FileMakerCtrl 控件提交的文档。

FileSaver 类用来接收并保存 PageOfficeCtrl 或 FileMakerCtrl 控件提交的文档。 您必须在 PageOfficeCtrl.SaveFilePage 或 FileMakerCtrl.SaveFilePage 指定的页面里创建和使用 FileSaver 对象。

版本:
2.0
作者:
北京卓正志远软件有限公司

构造方法摘要
FileSaver(HttpServletRequest request, HttpServletResponse response)
          初始化 FileSaver 类的新实例。
 
方法摘要
 void close()
          关闭 FileSaver 对象并返回保存成功的消息。
 java.lang.String getDocumentText()
          获取文档的纯文本内容。
 byte[] getFileBytes()
          返回控件提交的文档二进制流字节数组。
 java.lang.String getFileExtName()
          获取文档的文件扩展名。
 java.lang.String getFileName()
          获取控件提交的文档的文件名。
 int getFileSize()
          文件大小,以字节为单位。
 java.io.FileInputStream getFileStream()
          返回控件提交的文档二进制流。
 java.lang.String getFormField(java.lang.String name)
          获取 PageOfficeCtrl 控件所在页面指定的Form控件的值。
 java.lang.String getLocalFileExtName()
          获取 PageOfficeCtrl 控件提交的客户端本地文档的文件扩展名。
 java.lang.String getLocalFileName()
          获取 PageOfficeCtrl 控件提交的客户端本地文档的文件名。
 void saveToFile(java.lang.String saveAsFileName)
          保存当前文档到服务器文件夹。
 void setCustomSaveResult(java.lang.String value)
          设置开发者自定义保存结果。
 void showPage(int width, int height)
          在浏览器里弹出对话框显示HTML格式的自定义保存结果。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

FileSaver

public FileSaver(HttpServletRequest request,
                 HttpServletResponse response)
          throws java.lang.Exception,
                 java.io.IOException
初始化 FileSaver 类的新实例。

抛出:
java.lang.Exception
java.io.IOException
方法详细信息

getFileName

public java.lang.String getFileName()
获取控件提交的文档的文件名。

此文件名包含文件扩展名,但不包含文件夹路径。 如果打开文档时采用的是动态页面输出的文档二进制流,这里的文件名是动态输出时设定的附件文件名,例如:response.addHeader("Content-Disposition", "attachment; filename=down.doc");中的down.doc。


getFileExtName

public java.lang.String getFileExtName()
获取文档的文件扩展名。


getLocalFileName

public java.lang.String getLocalFileName()
获取 PageOfficeCtrl 控件提交的客户端本地文档的文件名。

此文件名包含文件扩展名,但不包含文件夹路径。当利用PageOfficeCtrl控件浏览上传用户本地Office文档时,此属性可以获取上传到服务器的本地文档的文件名。


getLocalFileExtName

public java.lang.String getLocalFileExtName()
获取 PageOfficeCtrl 控件提交的客户端本地文档的文件扩展名。


getFileSize

public int getFileSize()
文件大小,以字节为单位。


setCustomSaveResult

public void setCustomSaveResult(java.lang.String value)
设置开发者自定义保存结果。

下面的示例展示如何使用 CustomSaveResult 属性。

 FileSaver fs = new FileSaver(request, response);
 fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
 fs.setCustomSaveResult("我的返回值");
 fs.close();
 

然后在控件所在的 JSP 页面里定义的 JavaScript 保存函数(自定义保存按钮触发)里获取自定义保存结果。

 <script language="javascript" type="text/javascript">
     function SaveDocument() {
         document.getElementById("PageOfficeCtrl1").WebSave();
         alert(document.getElementById("PageOfficeCtrl1").CustomSaveResult);//您可以判断CustomSaveResult编写自己的代码逻辑。
     }
 </script>
 


close

public void close()
           throws java.io.IOException,
                  java.lang.Exception
关闭 FileSaver 对象并返回保存成功的消息。

保存文档的代码成功执行后,您必须调用此方法关闭 FileSaver 对象。 通常 close 方法应该放在 SaveFilePage 指定页面服务器代码的最后调用。

抛出:
java.io.IOException
java.lang.Exception
另请参见:
FileSaver.saveToFile()方法中完整的示例代码,学习如何保存文档。

saveToFile

public void saveToFile(java.lang.String saveAsFileName)
                throws ServletException,
                       java.io.IOException,
                       java.lang.Exception
保存当前文档到服务器文件夹。

保存当前文档到指定的服务器文件夹。如果您想把文档保存到数据库字段,请调用 getFileBytes() 或 getFileStream() 方法。 注意:Web Server可能有默认的可上传文件大小设置,如果上传的文件超出了设置,这里可能会出现保存错误。

下面的示例展示如何把控件提交的文档保存到指定的Web服务器文件夹。

在调试保存代码时,为了能够显示所有可能的异常信息,请不要在 SaveFilePage 指定的页面里使用 try...catch 语句。 如果保存时触发了异常导致保存失败,控件会显示详细的错误调试信息对话框。

 FileSaver fs = new FileSaver(request, response);
 String strFileName = fs.getFileName();
 String strFileExtName = fs.getFileExtName();
 int iFileSize = fs.getFileSize();
 
 // 保存当前文档到服务器文件夹。
 fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
 // 文档保存最后需调用 close 方法。
 fs.close();
 

参数:
saveAsFileName - 文档要保存到的目标位置,必须指定绝对路径及文件名。如果要保存到网站内的文件夹里,一般用 getRealPath() 映射绝对路径。
抛出:
ServletException
java.io.IOException
java.lang.Exception

showPage

public void showPage(int width,
                     int height)
              throws java.io.IOException
在浏览器里弹出对话框显示HTML格式的自定义保存结果。

如果您需要弹出HTML格式的自定义保存结果对话框,您需要调用此方法。 对话框里显示的内容是 SaveFilePage 返回的页面。默认情况下,SaveFilePage 页面什么也不显示。您需要在 SaveFilePage 页面里设计友好的提示信息。

下面的示例展示如何使用 showPage 方法在浏览器里显示自定义保存错误对话框。

 FileSaver fs = new FileSaver(request, response);
 if((fs.getFileExtName().equals("doc"))||(fs.getFileExtName().equals("docx"))){ // 只保存Word格式的文档。
     fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
 }
 else{
     out.println("保存失败!当前文档不是Word文档。"); // 简单输出错误信息,您可以设计友好的提示信息。
     fs.showPage(380, 200); // 如果当前文档不是Word文档,PageOfficeCtrl 控件就弹出对话框显示自定义错误页面。
 }
 fs.close();
 

参数:
width - 对话框的宽度,以像素为单位。
height - 对话框的高度,以像素为单位。
抛出:
java.io.IOException

getFileBytes

public byte[] getFileBytes()
                    throws ServletException,
                           java.io.IOException,
                           java.lang.Exception
返回控件提交的文档二进制流字节数组。

如果您需要把文件保存到数据库字段里,您可以调用本属性。如果您需要把文件保存到服务器文件夹里,您只需调用 FileSaver.saveToFile() 方法即可。

抛出:
ServletException
java.io.IOException
java.lang.Exception

getFileStream

public java.io.FileInputStream getFileStream()
                                      throws ServletException,
                                             java.io.IOException,
                                             java.lang.Exception
返回控件提交的文档二进制流。

抛出:
ServletException
java.io.IOException
java.lang.Exception

getDocumentText

public java.lang.String getDocumentText()
                                 throws java.io.IOException,
                                        java.lang.Exception
获取文档的纯文本内容。 获取文档的纯文本内容,不带任何附加格式。如果把此文本字符串保存到数据库字段,可以简单利用SQL语句轻松实现文档管理中的全文检索功能。

注意:此属性目前仅适用于Word。

下面的示例展示如何使用 DocumentText 属性获取当前文档的文本内容。

 FileSaver fs = new FileSaver(request, response);
 String strDocumentText = fs.getDocumentText(); 
 // 您可以把此文本字符串保存到数据库字段。
 
 fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
 fs.close();
 

返回:
返回文档的纯文本内容。
抛出:
java.io.IOException
java.lang.Exception

getFormField

public java.lang.String getFormField(java.lang.String name)
                              throws java.io.IOException,
                                     java.lang.Exception
获取 PageOfficeCtrl 控件所在页面指定的Form控件的值。

当 PageOfficeCtrl 提交文档时,您可以调用此方法获取PageOfficeCtrl 控件所在页面里Form控件的值。

注意:为了获取Form控件的值,Form控件必须包含 name 属性。

这里的Form控件包括输入框、下拉框、单选框、复选框、TextArea、隐藏域等类型的控件。

下面的示例展示如何使用 getFormField 获取 PageOfficeCtrl 控件所在页面Form域里的指定Form控件的值。

 FileSaver fs = new FileSaver(request, response);
 String strSubject = fs.getFormField("EditSubject"); 
 
 fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/") + "/" + fs.getFileName());
 fs.close();
 

参数:
name - Form控件的名称(name)。
返回:
返回Form控件的值。
抛出:
java.io.IOException
java.lang.Exception