所以我有一个数据库,里面有一个附件表,里面有一个存储实际文件的二进制列。
我想在我的代码中生成一个文件,将内容添加到此文件并将其作为二进制数据保存到我的数据库,而不保存物理文件。
所以我有这个代码
var fileString = "Some random file content string";
var bytes = Encoding.UTF8.GetBytes(fileString);
var stream = new MemoryStream(bytes);
这会创建文件内容的二进制文件,但是当我来保存文件时,它是一个* .bin文件,因为没有代码可以说明它是什么类型的文件。
如何用一个文件包装字符串的内容,然后将其保存为二进制文件?
请不要提出替代方案,我知道这不是最好的方法,但我对这个系统有极大的限制。
感谢
答案 0 :(得分:0)
您可以尝试这样System.IO.File.WriteAllBytes:
var fileString = "Some random file content string";
var bytes = Encoding.UTF8.GetBytes(fileString);
File.WriteAllBytes(pathToFile, bytes);
答案 1 :(得分:0)
您必须将文件数据(如字节数组)传递给sql参数值。
你所要做的就是 创建DbCommand后继(如MS SQL服务器的SqlCommand) 添加命令文本,例如'插入附件(attachid,content)值(@aid,@ c)' 创建参数实例
var p = command.CreateParameter();
p.ParameterName = "@c";
p.Value = bytes;
p.SqlDbType = SqlDbType.Binary;
command.Parameters.Add(p);
(所有其他参数都相同) 然后执行command.ExecNonQuery(); 这会将字符串值作为字节数组放入数据库中的数据表附件。