其实我想实现的是这样一个东西,用户在客户端将编辑好的一个文件(或者提供在线编辑功能也好),比如一个doc文件,或是一个mht文件,因为这种文件里可以同时保存图片和文字,上传到服务器后需要将文件存入数据库的一个blob字段里,用户浏览的时候调用一个servlet将这个文件从数据库里取出来,浏览需要是以超文本的方式浏览。现在的问题是如果采用doc的话浏览会有问题,如果是mht文件,浏览的时候好像受ie版本的限制,有些高版本的ie可以显示出来,低版本就不行。另外,将文件直接以流的方式输出的话,如果文件里有图片是不是就会显示不出来?如何实现请大家给点思路吧,很着急很着急!谢谢!
解决方案 »
- 关于Object数组的问题
- Java 多线程技术,到底是怎么一回事啊?怎样实现呢?另外,如何为按钮增添事件呢?谢谢了
- 用java代码实现
- 求中文字符串的处理问题?
- 用Eclipse运行J2ME程序,运行时如果当前修改后代码未保存,则运行的是未保存的修改代码
- 关于Combobox的小问题
- 每隔1秒鐘就去檢查一個變量,當那變量變為0時,就println(“end”)怎麼寫呢?
- 一个关于jbuilder生成的exe文件的问题
- 请问这段Code如何实现在BUTTON CLICK事件中改变BUTTON BACKCOLOR?
- 我想向各位高手请教关于对象序列化的问题! 现在很急,多谢各位!
- 哪位大侠知道如何使用JfreeChart画出像MS Project2003中的甘特图?特别是那些竖线.
- 如何使用JfreeChart画出像MS Project2003中的甘特图?
<%@ page contentType="application/msword; charset=gb2312" %>
通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码:
<%response.setHeader("Content-Disposition", "attachment;filename=filename.doc");%>
其中filename.doc中filename是要下载的word文档的文件名,可以通过<%=docName%>来自行定制,如下
<%response.setHeader("Content-Disposition", "attachment;filename=<%=docName%>.doc");
%>在client输出oracle中BLOB字段中的word文档实体。其中调用了类getBlobBean,该类提供了从oracle中取出blob功能,代码如下:
package yourpackage;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import oracle.sql.*;
import beans.yourbeanpackage. getBlobBean;
public class GetBlobServlet1 extends HttpServlet {
//设置输出内容类型,这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。
private static final String CONTENT_TYPE = "application/msword;charset=gb2312";
//Initialize global variables
public void init() throws ServletException {}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
perform(request,response);
}
public void perform(HttpServletRequest request, HttpServletResponse response){
try{
//该类功能是从oracle哭中取出blob实体
getBlobBean getBlob=new getBlobBean();
OutputStream sos = response.getOutputStream();
getBlob.connFunction();
oracle.sql.BLOB blob=getBlob.getBlob("cehui");
//输出word文档
if(blob!=null){
InputStream pi = blob.getBinaryStream();
int blobsize =(int)blob.length();
byte[] blobbytes = new byte[blobsize];
int bytesRead = 0;
while ((bytesRead = pi.read(blobbytes)) != -1) {
sos.write(blobbytes, 0, bytesRead);
}
pi.close();
sos.flush();
sos.close();
}
getBlob.dropConnFunction();
}catch(Exception e){
System.out.println(e.toString());
}
}
//Clean up resources
public void destroy() {}
}