0

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

     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
4

1 回答 1

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

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

于 2013-03-02T02:27:49.540 回答