sql >> Database >  >> RDS >> Sqlserver

Hoe een afbeelding naar een bytearray te converteren met alleen javascript om de afbeelding op de sql-server op te slaan?

ik heb een oplossing gevonden. :)

in html javascript-bestand, converteer eerst de geüploade afbeelding naar het base64-afbeeldingsformaat met behulp van de volgende code.

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

dus we hebben base64-code van geüploade afbeelding in dataURL .

STUUR NU DEZE BASE64-CODE (dataURL ) naar webservice en converteer de base64-string naar byte-array met behulp van de volgende code en sla ook op naar sql-server

c# code - voor het converteren van base64 naar byte arry en om op te slaan op 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();
}

hoop dat je het begrijpt :) ......



  1. Oracle - Waarom zou ik pakketten gebruiken in plaats van op zichzelf staande procedures of functies?

  2. Postgres UUID JDBC werkt niet

  3. Basisprincipes van buitenlandse sleutels in MySQL?

  4. Hoe geef ik een MySQL-fout in PHP weer voor een lange zoekopdracht die afhankelijk is van de invoer van de gebruiker?