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);" 、サーバー側のパスのみを読み取るため、画像をアップロードできるようにするには、どのような変更を加える必要がありますか?

ありがとう

=============================================================================================================================================================================================================================== ========================================================

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 に答える