gpt4 book ai didi

c# - 将图像从 asp.NET (C#) 上传到 Oracle 11g

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:04 25 4
gpt4 key购买 nike

我想将图像从 asp.NET Web Forms (4.0) 应用程序上传到 Oracle 11g 数据库。最终,我还需要检索图像。

我被告知要使用 blob 类型,但如果找到更好的解决方案,这可能会改变。

从前端的角度来看,我正在使用 asp.NET 文件上传组件,并且非常适合选择文件的路径。

最好的解决方法是什么?与 blob 一起工作?与 bfile 一起工作?在服务器上上传图像并只存储路径?

最佳答案

假设您有一个名为 IMAGES 的表,其中包含一个 BLOB 列,您需要执行类似于以下操作的操作:

byte[] imageData = FileUpload1.FileBytes;

OracleCommand cmd = new OracleCommand("INSERT INTO IMAGES(PARENT_ID, IMAGE_DATA) VALUES(:1, :2)", connection);
cmd.Parameters.Add("1", OracleDbType.Int32, parentID, ParameterDirection.Input);
cmd.Parameters.Add("2", OracleDbType.Blob, imageData, ParameterDirection.Input);

cmd.ExecuteNonQuery();

更新:在显示图像时,您主要需要了解 HTML 页面仅包含对图像的引用 (<img src="ImageFromDatabase.ashx?id=1234">),并且图像本身由单独的请求提供。以下示例使用通用处理程序:

public void ProcessRequest (HttpContext context) {
HttpRequest request = context.Request;
int parentID = Int32.Parse(request.QueryString["id"]);

OracleCommand cmd = new OracleCommand("SELECT * FROM IMAGES WHERE PARENT_ID = :1", connection);
cmd.Parameters.Add("1", OracleDbType.Int32, parentID, ParameterDirection.Input);
OracleDataReader reader = cmd.ExecuteReader();

byte[] imageData = ((OracleBlob)reader["IMAGE_DATA"]).Value;
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(imageByte);
}

我省略了您应该在实际应用程序中添加的所有错误处理。

更新 2:

如果你有一个 GridView ,你可以像这样定义图像列:

<asp:Image ID="Image1" runat="server" ImageUrl='<%# "ImageFromDatabase.ashx?id=" + Eval("ImageID")%>'/>

关于c# - 将图像从 asp.NET (C#) 上传到 Oracle 11g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com