关于dsoframer控件保存文档至服务器的问题
来源:互联网 发布:office2017 mac 威锋 编辑:程序博客网 时间:2024/05/29 04:27
dsoframer是微软提供一款开源的基于web的office ActiveX控件,国内有达人在源码的基础上做了很多修改,增强了控件的功能。其实基于web的office是一个很鸡肋的东西,没有什么存在的意义。唯一的一点就是看上去比较花哨,你瞧,在浏览器上打开word文档,多吊啊。不知道原版dsoframer是否带有直接保存文档至服务器的功能,不过我手头上的一个改良版本的确是有此功能。
控件附带说明给出了保存文档至服务器的javascript函数,如:
function SaveToWeb()
{
document.all.FramerControl1.HttpInit();
document.all.FramerControl1.HttpAddPostCurrFile("FileData","mydoc.doc");
var err =document.all.FramerControl1.HttpPost("Http://202.114.12.137/newvan/pm/auxi/SaveDoc.aspx");
if (!err)
alert('保存失败!');
else
alert('保存成功!');
}
由此可见,关键问题是如何实现SaveDoc.aspx模块。于是乎在网上搜索相应的解决方案,但没有一个能在服务器上成功保存正确的文件。失望之余索性将原文档和上传文档用UltraEdit打开进行二进制级比较,然后抓包分析POST数据时http数据包的格式,最后终于找到了解决的办法,贴出来供遇到同样问题的朋友参考,代码如下:
BinaryReader bReader= new BinaryReader(Request.InputStream);
string strTemp =Encoding.GetEncoding("iso-8859-1").GetString(
bReader.ReadBytes((int)bReader.BaseStream.Length), 0, (int)bReader.BaseStream.Length);
string match= "Content-Type: application/msword\r\n\r\n";
int pos = strTemp.IndexOf(match)+ match.Length;
bReader.BaseStream.Seek(pos,SeekOrigin.Begin);
string newFile = Server.MapPath(".")+ "\\MyFile2.doc";
FileStream newDoc = new FileStream(newFile,FileMode.Create,FileAccess.Write);
BinaryWriter bWriter = new BinaryWriter(newDoc);
bWriter.BaseStream.Seek(0,SeekOrigin.End);
while (bReader.BaseStream.Position< bReader.BaseStream.Length- 38)
bWriter.Write(bReader.ReadByte());
bReader.Close();
bWriter.Flush();
bWriter.Close();
这里应该注意的是,从字节流中获取字符串时一定要采用iso-8859-1的编码方式,不要采用utf-8或其他,因为utf-8会将asci字符也扩展成相应的unicode双字节形式。原理很简单,代码面前了无秘密。
- 关于dsoframer控件保存文档至服务器的问题
- dsoframer-在线编辑(读取保存服务器文档)
- 使用DsoFramer控件时遇到的问题及解决
- DSOFramer控件文档上传到服务器处理页面后,怎么解析数据 <转>
- DSO(dsoframer)的接口文档
- DSO(dsoframer)的接口文档
- DSO(dsoframer)的接口文档
- DSO(dsoframer)的接口文档
- DSO(dsoframer)的接口文档
- DSO(dsoframer)的接口文档
- dsoframer控件-jsp在线编辑offic文档
- dsoframer.ocx控件编辑后保存在服务器端的简单方法
- DSOFRAMER内的EXCEL文档访问方法
- DSOFRAMER内的EXCEL文档访问方法
- 一个关于vc6.0保存控件内容的问题
- 关于dsoframer VC++下的使用
- 关于DSOFramer开源资源的整理
- 关于在webbrowser控件里面打开word文档的问题
- 如何在项目中用一台机器进行简单性能测试
- PHPCMS中模板中$forminfos循环输出表单的代码详解
- DSOFramer控件文档上传到服务器处理页面后,怎么解析数据 <转>
- 简单的python流回显服务器与客户端
- phpcms中的loop标签
- 关于dsoframer控件保存文档至服务器的问题
- [USACO 1.3.3] Calf Flac
- 12个项目管理成功的关键原则
- 计算某年某月某日是星期几
- apt命令详解
- linux下批量修改用户密码(转)
- Linux2.6.39下dm9k驱动源码分析(二)
- 资治通鉴,卷一百三十五,南朝四国难得的温馨场面
- 很简单却很容易做错的一道笔试题