【问题标题】:Inconsistency in file before and after upload to Oracle DB上传到Oracle DB前后文件不一致
【发布时间】:2010-11-14 12:18:05
【问题描述】:

我正在尝试让我的网站允许用户上传各种文件 (HttpPostedFile),然后将这些文件作为 BLOB 存储在 Oracle 数据库中。到目前为止,这是我所得到的:

    public static bool insertFile(int pid, HttpPostedFile file, string filedesc)
    {
        string filename = file.FileName.Remove(0, file.FileName.LastIndexOf("\\") + 1);
        byte[] filebytearray = new byte[file.ContentLength];
        BinaryReader br = new BinaryReader(file.InputStream);
        filebytearray = br.ReadBytes(file.ContentLength);

        if (filedesc == string.Empty)
        {
            filedesc = "No description.";
        }
        OracleConnection conn = new OracleConnection(connectionString);
        OracleCommand cmd = new OracleCommand("database", conn);
        cmd.BindByName = true;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new OracleParameter("pfiledata", OracleDbType.Blob)).Value = filebytearray;
        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
            return true;
        }
        catch (Exception ex)
        {
            Errors.WriteToEventLog("File insert", ex);
            return false;
        }
        finally
        {
            conn.Dispose();
            cmd.Dispose();
            file.InputStream.Dispose();
        }
    }

文件已成功上传和下载 - 但是,下载的文件与上传的文件不同。我已经验证了内容与它进出数据库的文件相同,这意味着该文件要么没有被正确转换,要么没有被客户端正确保存。这两个文件在磁盘上的大小相同,但根据 Windows 不同。根据十六进制编辑器,下载的文件副本似乎在文件的开头缺少 3 个字节。

这是我用来将文件传输到客户端的方法: 响应。清除(); Response.AddHeader("Content-Disposition", "attachment; filename=" + fileinfo[1]);
Response.AddHeader("内容长度", filedata.Length.ToString());
Response.ContentType = "应用程序/八位字节流"; Response.BinaryWrite(文件数据);

任何帮助将不胜感激。

【问题讨论】:

    标签: c# bytearray binaryreader httppostedfile


    【解决方案1】:

    我在网上看到的很多示例代码状态

    br.BaseStream.Position = 0;
    

    阅读前;我不明白为什么,但您是否可能需要明确设置起始位置?

    【讨论】:

    • 谢谢,成功了。 BinaryReader 不会捕获索引为 0 的流作为默认值,这对我来说似乎很奇怪,但现在它可以工作了,我不会过多质疑它。
    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多