上传图像并保存到SQL数据库中的可视化web开发人员



我已经在数据库中创建了一个存储过程,用于添加图像,但现在的问题是,我需要在客户端获得图像数据并转换为字节以插入数据库,这是我使用的代码:

     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();
}

我假设客户端是调用上面方法的那个。不能肯定这能解决你的问题,但值得一试。无论如何,预先读取字节更容易阅读,您应该进行此更改。

最新更新