我尝试读取blob并像byte []一样发送它。这是我使用的方法。
public byte[] getBlob(long blobId)
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = _connection;
cmd.CommandText = "select TBlob_file FROM Tblob where blobId= " + blobId;
object obj = cmd.ExecuteScalar();
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
我得到答案,但格式不好。我的回答如下:
<base64Binary>AAEAAAD/////AQAAAAAAAAAPAQAAAIFqBgAC/9j/4AAQSkZJRgABAQEASABIAAD/ .......
始终以AAEAAAD/////AQAAAAAAAAAPAQ
开头我认为这是问题所在。也许我没有正确地在byte []中转换blob?
感谢名单
答案 0 :(得分:0)
这是我的字符串到字节数组转换的方法(你必须先将obj
转换为字符串):
public static byte[] StringToByteArray(string hex)
{
int numberChars = hex.Length;
var bytes = new byte[numberChars / 2];
for (int i = 0; i < numberChars; i += 2)
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
另外 - 请阅读有关sql注入攻击的内容,您可以从这里开始:http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/。您必须使用参数而不仅仅是字符串连接。