sql >> データベース >  >> RDS >> Sqlserver

SQLサーバーに画像を保存するためだけにJavaScriptを使用して画像をバイト配列に変換するにはどうすればよいですか?

    私は1つの解決策を見つけました。 :)

    html javascriptファイルでは、最初に次のコードを使用して、アップロードされた画像をbase64画像形式に変換します。

    var p;
    var canvas = document.createElement("canvas");
    var img1=document.createElement("img"); 
    
    function getBase64Image(){     
        p=document.getElementById("fileUpload").value;
        img1.setAttribute('src', p); 
        canvas.width = img1.width; 
        canvas.height = img1.height; 
        var ctx = canvas.getContext("2d"); 
        ctx.drawImage(img1, 0, 0); 
        var dataURL = canvas.toDataURL("image/png");
        alert("from getbase64 function"+dataURL );    
        return dataURL;
    } 
    

    そのため、アップロードされた画像のbase64コードをdataURLで取得しました 。

    今すぐこのBASE64コードを送信してください(dataURL )Webサービスに変換し、次のコードを使用してbase64文字列をバイト配列に変換し、SQLサーバーにも保存します

    c#コード--base64をbyte arryに変換し、sqlに保存するための

    private void Form1_Load(object sender, EventArgs e) {
        int userid = 5;
        string base64="";// load base 64 code to this variable from js 
        Byte[] bitmapData = new Byte[base64.Length];
        bitmapData = Convert.FromBase64String(FixBase64ForImage(base64));
        string connstr = @"user id=sa; password=*****"; 
        database=ImageTest; 
        server="192.168.1.104";
        SqlConnection conn = new SqlConnection(connstr);
        conn.Open();
        string query;
        query = "insert into imagetable(userid,image) values(" + userid + "," + " @pic)";
        SqlParameter picparameter = new SqlParameter();
        picparameter.SqlDbType = SqlDbType.Image;
        picparameter.ParameterName = "pic";
        picparameter.Value = bitmapData;
        SqlCommand cmd = new SqlCommand(query, conn);
        cmd.Parameters.Add(picparameter);
        cmd.ExecuteNonQuery();
        cmd.Dispose();
        conn.Close();
        conn.Dispose();
    }
    public static string FixBase64ForImage(string image) {
        StringBuilder sbText = new StringBuilder(image, image.Length);
        sbText.Replace("\r\n", String.Empty);
        sbText.Replace(" ", String.Empty);
        return sbText.ToString();
    }
    

    理解していただければ幸いです:)......



    1. CentOS6にCassandrav3をインストールする方法

    2. PostgreSQLのすべてのデータベースのサイズを取得する(psql)

    3. 最大限のデータ保護のための完全なMariaDB暗号化の保管中および転送中-パート2-

    4. OracleSQLで日付関数を操作する方法