找回密码
 立即注册

QQ登录

只需一步,快速开始

sherryathena

新手上路

1

主题

3

帖子

38

积分

新手上路

积分
38
  • 35

    金币

  • 主题

  • 帖子

最新发帖
sherryathena
新手上路   /  发表于:2014-3-24 14:49  /   查看:9143  /  回复:10
我的需求是希望能直接打开服务器上面的WORD文档,不在本地保存文件
获得服务器上面的Stream,转换为byte之后调用Load方法,报错

                FtpWebRequest request = LinkToFtp("ftp://Ftp/上查下查说明.docx");
                request.Method = WebRequestMethods.Ftp.DownloadFile;
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                Stream ftpStream = response.GetResponseStream();

                byte[] buffer = new byte[response.ContentLength];
                ftpStream.Read(buffer, 0, buffer.Length);
                textControl1.Load(buffer, TXTextControl.BinaryStreamType.InternalUnicodeFormat);

报错信息:
QQ截图20140324143224.jpg (10.84 KB, 下载次数: 289)

10 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-3-24 18:47:00
沙发
回复 1楼sherryathena的帖子

能否考虑先保存到本地,之后再删除?
回复 使用道具 举报
sherryathena
新手上路   /  发表于:2014-3-28 14:35:00
板凳
回复 2楼iceman的帖子

用户需求就是要求不落地打开
Load方法里面有byte[]参数的重写,这样写有什么问题么?为什么会报错?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-3-28 18:11:00
地板
回复 3楼sherryathena的帖子

你好,

问题我已经通过附件中的 Demo 重现了,需要发给厂商查看,有结果反馈给你。
12235.zip (46.85 KB, 下载次数: 368)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-3 10:19:00
5#
回复 3楼sherryathena的帖子

当前问题进展:

验证了通过网络加载和直接读取本地相同文件的 byte 字节数相同。

但是通过网络加载的 Stream 保存为本地要比文件小。

我正在继续和厂家沟通这个问题。
回复 使用道具 举报
sherryathena
新手上路   /  发表于:2014-4-3 13:31:00
6#
回复 5楼iceman的帖子

麻烦你了,谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-3 16:22:00
7#
回复 6楼sherryathena的帖子

客气了,应该做的
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-11 10:14:00
8#
回复 6楼sherryathena的帖子

厂商反馈:通过本地文件转换为 byte 加载没有问题,说明tx是可以加载该文档的。那么问题应该出在下载程序上。

我尝试了多中下载方式都没有解决,请问你那边有什么进展吗?
回复 使用道具 举报
sshuicn
注册会员   /  发表于:2014-5-5 14:44:00
9#
textControl1.Load(buffer, TXTextControl.BinaryStreamType.InternalUnicodeFormat);
我感觉这句有点问题, textControl1没有完全加载ActiveX控件就会出错。。

我的经验是:
   public static class TextControlExpand
    {
        private static Dictionary<int, string> dic = new Dictionary<int, string>();
        public static void Load(this TextControl control, string context)
        {
            try
            {
                control.Load(context, TXTextControl.StringStreamType.RichTextFormat);
            }
            catch (Exception)
            {
                dic[control.GetHashCode()] = context;
                control.VisibleChanged += control_VisibleChanged;
            }
        }


        static void control_VisibleChanged(object sender, EventArgs e)
        {
            TextControl ctrl = (sender as TextControl);
            ctrl.VisibleChanged -= control_VisibleChanged;
            ctrl.Load(dic[sender.GetHashCode()], TXTextControl.StringStreamType.RichTextFormat);
        }
}
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-5-7 08:16:00
10#
回复 9楼sshuicn的帖子

请问你指的是当前 TX 控件还没有加载完导致的异常吗?能否上传你的完整示例看下?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部