我在数据库中创建了一个用于添加图像的存储过程,但现在问题是,我需要在客户端获取图像数据并转换为字节以插入数据库,这是我正在使用的代码:
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
答案 0 :(得分:0)
您是否在设置命令之前尝试读取字节数组?
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();
}
我假设客户端是调用上述方法的客户端。不积极,这将解决你的问题,但它值得一试。无论如何,读取前面的字节更容易阅读,你应该做这个改变。