代码之家  ›  专栏  ›  技术社区  ›  Xami Yen

保存到图像列的文档在检索时损坏

  •  0
  • Xami Yen  · 技术社区  · 6 年前

    我在保存文件( *.docx, *.doc, *.pdf )给一个 Image

    [DocId] [int] IDENTITY(1,1) NOT NULL,
    [DocDate] [datetime] NOT NULL DEFAULT (getdate()),
    [DocName] [varchar](255) NOT NULL  DEFAULT (''),
    [DocObject] [image] NOT NULL
    

    正在使用C语言中的此代码保存文档#

    using (Stream docStream = UploadResume.PostedFile.InputStream)
    {
        Int32 docSize = (Int32)docStream.Length;
        byte[] docBytes = new byte[docSize + 1];
        docStream.Read(docBytes, 0, docSize);
        SaveDoc(docId, UploadResume.PostedFile.FileName.Trim(), docBytes);
    }
    

    SaveDoc是将数据插入表中的过程。为了简洁起见,我删除了保存其他数据字段的代码。

    byte[] docBytes = (byte[])(dt.Rows[0]["DocObject"]);
    var fileName = dt.Rows[0]["DocName"].ToString();
    File.WriteAllBytes(Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Documents\\{DateTime.Now.ToString("yyyyMMdd")}"), $"{fileName}"), docBytes);
    

    我能够将MS-Word文档保存到数据库中,从数据库中检索并成功地将其保存到文件系统中。但是,当我用MS-Word打开文档时,会收到一条错误消息,指示文件已损坏。PDF文件保存和打开没有问题。Microsoft Word文档不是。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Xami Yen    6 年前

    谢谢你的帮助。我把多余的字节放在测试别的东西上,后来忘了删除它。这就是问题所在。我把它移走了,一切正常。我知道映像列类型已被弃用。但是,数据库是第三方商业产品的一部分,不能在不破坏商业应用的情况下进行修改。谢谢你指出。谢谢你。我还不能接受答案和投票,因为我没有足够的声誉点。