我已经在数据库中创建了一个存储过程,用于添加图像,但现在的问题是,我需要在客户端获得图像数据并转换为字节以插入数据库,这是我使用的代码:
public static void AddImg (string asImgName, string asFilePath, string asUser, string asRemarks)
{
cmd = new SqlCommand("sp_InsertImage", SqlConnect.con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Image_Name", SqlDbType.NVarChar).Value = asImgName;
cmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = File.ReadAllBytes(asFilePath);
cmd.Parameters.Add("@Uploader", SqlDbType.NVarChar).Value = asUser;
cmd.Parameters.Add("@Remarks", SqlDbType.NVarChar).Value = asRemarks;
cmd.Parameters.Add("@UploadDate", SqlDbType.DateTime).Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
cmd.ExecuteNonQuery();
}
现在我面临一个问题:在代码的第5行"cmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = File.ReadAllBytes(asFilePath);"
它只读取服务器端路径,那么我需要做什么更改才能上传图像呢?
======================================我通过使用VWD
中的上传文件控件解决了这个问题。fileUpload1.FileBytes
您是否尝试在设置命令之前读取字节数组?
public static void AddImg (string asImgName, string asFilePath, string asUser, string asRemarks)
{
var bytes = File.ReadAllBytes(asFilePath);
...
cmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = bytes;
...
cmd.ExecuteNonQuery();
}
我假设客户端是调用上面方法的那个。不能肯定这能解决你的问题,但值得一试。无论如何,预先读取字节更容易阅读,您应该进行此更改。