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

时间:2013-02-27 03:55:12

标签: c# sql sql-server visual-studio-2010 vwdexpress

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

     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

1 个答案:

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

我假设客户端是调用上述方法的客户端。不积极,这将解决你的问题,但它值得一试。无论如何,读取前面的字节更容易阅读,你应该做这个改变。