Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да конвертирате изображение в масив от байтове, като използвате само javascript, за да съхранявате изображение на sql сървър?

намерих едно решение. :)

в 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 ) към уеб услуга и преобразувайте низа base64 в масив от байтове, като използвате следния код и запазете и на sql сървър

c# код - за конвертиране на base64 в байт 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничение за проверка за припокриване на период от време

  2. Създайте пощенски акаунт в база данни в SQL Server (T-SQL)

  3. Обобщена таблица на SQL Server с множество агрегати на колони

  4. SQL Server 2008 не може да влезе с новосъздадения потребител

  5. Изпълнете съхранена процедура от функция