ASP 里是这样做的, 不知JSP是否也可以这样:Response.AddHeader "Content-Disposition", "filename="+ rs.fields("FileName").value)
Response.ContentType="application/octet-stream"
Response.BinaryWrite rs.fields("FileCont").value
Response.ContentType="application/octet-stream"
Response.BinaryWrite rs.fields("FileCont").value
首先我在数据库中存的是一个完整的word文件,用application/octet-stream会提示下载
不用response.setContentType("application/msword"); 直接在ie中显示时
出现乱码
用response.setContentType("application/msword"); 可以很好的显示,但word内嵌ie
不是我需要的,我需要的是在ie中直接显示所以还请大家继续讨论
如果不调用word来解析,通过流直接在ie上显示,就会出现乱码关键就是不知道在image字段中是以一个什么样的形式来存储一个完整的word文档的
存进去的时候是按字节存的,为什么取的时候按字节取就会出现乱码(不调用word解析)?难道必须要设置response.setContentType("application/msword"); 调用word来解析?
<script language="javascript">
function convert2html(){
html.value = word.innerHTML;
}
</script><p>请在这里贴入WORD文件内容
<div style="border:1 outset #ffffff; overflow:auto;width:80%;height:50%" id="word" contenteditable></div>
<input type="button" value="转换成HTML" onclick="convert2html()"><br><p>
<textarea cols="80" rows="10" id="html">
是告诉浏览器,这个文档的MIME是msword (这样一般浏览器就会自动调用该MIME类型登记的应用程序了),还是客户端要在后台解析:要使用VBAASP code like:<%
set wordApp = Server.CreateObject("Word.Application")
set wordDoc = Server.CreateObject("Word.Document")
...
set resultHTMLstream = Server.CreateObject("ADODB.stream")wordDoc.SaveAs resultHTMLstream, "HTML"
%>Java中我不会,不过相信Java可以调用ActiveX,道理一样
看来是要调用用activex来实现了
连接中提供的方法用到了jacob包,谁知道在那可以下载?
连接中是对一个硬盘上的doc文件作处理,可我的是存在数据库中,难道中间要多一步:生成一个doc文件在硬盘上,然后再调用activex进行处理?为什么直接以流的形式取不出来,或者取出来的是乱码?另外如果将数据库中的流图片保存到一个word文档中?呵呵,不知不觉提了这么多问题,我会另开贴给分的
希望大家继续研究
谢谢
<object
classid="clsid:4F90C80F-392A-420E-BFE8-BDDB9CAE81C5" name="control1" width=1 height=1 codebase="control1.cab"
></object>
<script language=javascript>
control1.File = "F:\\sample\\control1\\test.doc";
if(!control1.OpenFile())
alert("opendoc error");
control1.LoadMacro("ActiveDocument.TrackRevisions=True\nMsgBox ActiveDocument.VBProject.VBComponents.Item(1).Name");
</script>
现在最急的是:如何将数据库中的流图片保存到一个word文档中?请高手出招
:)
Word文档是通过COM对象显示其某些特性的。要从 Java 访问 COM 对象,首先必须使用 Microsoft 的 Java 虚拟机 (JVM) JView。但这太依赖Microsoft,所以最好用一种叫做java-com bridge的东西,JACOB允许任何JVM访问COM对象
我用一个称之为majix的工具在jacob的基础上可以把word文档转变为xml
XML文档存储的数据能导入数据库的
我现在的理解,xml作为所有数据存储格式的中间桥梁,不管是数据库中的,word文档的,excel文档.
这是别人提供的思路。期望能对你有帮助!
另外我有个问题,想请教,望能相住:oracle中的图片如何在jsp中的指定位置显示。
qq 4484945
oracle中的图片如何在jsp中的指定位置显示
用一个table〈tr〉<td>固定一下就ok了
<table>
<tr>
<td width="20%">
<image src="../servlet/test?p=图片id" width="20" height="10">
</td>
</tr>
<%
InputStream in;
in=rs.getBinaryStream("picture");
response.reset();
response.setContentType("image/gif");
byte[] b=new byte[1024*1024];
int len;
while((len=in.read(b))>0)
response.getOutputStream().write(b,0,len);
response.getOutputStream().flush();
response.getOutputStream().close();
%>
<center><img src=<%=b%> width="5" height="6"></center> 出现问题:只显示了图片,而且也没有到指定位置,其他文字都没有显示。望相告!
试试用2个jsp文件来完成,一个是表格,一个是得到输出流
最好还是用servlet,这本来就是它干的活
有什么问题给我短信,不要在这个贴子上回复了有些问题我还要和大家讨论
如何将数据库中的流图片保存到一个word文档中?
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<SCRIPT>
function download(url)
{
alert('start download')
var objHttp = new ActiveXObject("Microsoft.XMLHTTP");
objHttp.Open("GET",url, false);
objHttp.send();
objStream = new ActiveXObject("ADODB.Stream");
objStream.Type = 1
//objStream.Charset = "ascii"
objStream.Open()
objStream.Write(objHttp.responseBody)
objStream.SaveToFile("c:\\test.doc",2)
//var appWord = new ActiveXObject("Word.Document");
objStream.Close()
alert("download complete: save to c:\\ " + url.replace(/(.*)\//,""))
}
</script>
<BODY>
<span style="cursor:hand;color:blue" onclick="download('http://localhost/test.doc')">click to download</span>
<P> </P></BODY>
</HTML>
前台解析可以用以下代码:
如果要后台解析,逻辑上是一样的,
用
http://expert.csdn.net/Expert/topic/1369/1369408.xml?temp=.5521204
提到的
import com.jacob.com.*;
import com.jacob.activeX.*;
修改一下就可以了
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<SCRIPT>
function download(url)
{
alert('start download')
var objHttp = new ActiveXObject("Microsoft.XMLHTTP");
objHttp.Open("GET",url, false);
objHttp.send();
var objStream = new ActiveXObject("ADODB.Stream");
objStream.Type = 1
objStream.Open()
objStream.Write(objHttp.responseBody)
objStream.SaveToFile("c:\\test.doc",2)
objStream.Close()
alert("download complete: save to c:\\ " + url.replace(/(.*)\//,"")+"\nTry to using Word to Save it as HTML")
var oWordApp = new ActiveXObject("Word.Application");
oWordApp.Visible = true;
var oWordDoc = oWordApp.Documents.Add("C:\\test.doc");
var rngCurrent = oWordDoc.Application.ActiveDocument.Content
var tabCurrent = oWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,4,4)
oWordDoc.Tables(1).Rows(1).Cells(1).Range.InsertAfter("cell1 content");
oWordDoc.SaveAs("c:\\test.htm",8,1);
oWordDoc.Close();
objStreamHtml = new ActiveXObject("ADODB.Stream");
objStreamHtml.Type = 2;
objStreamHtml.Charset = "ascii"
objStreamHtml.Open()
objStreamHtml.LoadFromFile("c:\\test.htm")
alert("SaveAs HTML complete: save to c:\\test.htm")
var strHTML = objStreamHtml.ReadText(-1);
objStreamHtml.Close()
document.write (strHTML);
}
</script>
<BODY>
<span style="cursor:hand;color:blue" onclick="download('http://localhost/test.doc')">click to download</span>
<P> </P></BODY>
</HTML>
test.htm里有字符cell1 content
我怎么将test.doc里的内容保存到test.htm文件里呢?而不是cell1 content?
我怎么将test.doc里的内容保存到test.htm文件里呢?而不是cell1 content?
to:everybody
如何将数据库中的流图片保存到一个word文档中?
这一行是我的测试语句(利用次类方法可以修改添加word内容)
注释掉就可以了
哎,M$就是太关注应用(直接内含了读文件流,不需要用户输入流对象,只要一个文件名),架构和模式和Java差远了
//var tabCurrent = oWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,4,4)
//oWordDoc.Tables(1).Rows(1).Cells(1).Range.InsertAfter("cell1 content");
基本上可以了
但word中如果有中文,该中文显示在html中就是乱码
不知道能否解决?
在运行过程中会弹出“调用acticex不安全”
能不能不让弹出该对话框?