Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przekonwertować obraz na tablicę bajtów za pomocą javascript tylko do przechowywania obrazu na serwerze sql?

znalazłem jedno rozwiązanie. :)

w pliku javascript html, najpierw przekonwertuj przesłany obraz na format obrazu base64 za pomocą następującego kodu.

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

więc otrzymaliśmy kod base64 przesłanego obrazu w dataURL .

TERAZ WYŚLIJ TEN KOD BASE64 (dataURL ) do usługi internetowej i przekonwertuj ciąg base64 na tablicę bajtów za pomocą następującego kodu i zapisz również na serwerze sql

kod c# — do konwersji base64 na tablicę bajtów i do przechowywania w 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();
}

mam nadzieję, że rozumiesz :) ......



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić nazwę tabeli w dynamicznym zapytaniu SQL?

  2. Jak uwzględnić wyniki związane z ostatnim miejscem podczas używania klauzuli TOP w SQL Server?

  3. Wywołaj procedurę składowaną z parametrem w c#

  4. Wybór pierwszego rzędu na grupę

  5. Jak zmienić nazwę czegoś w SQL Server, co ma w nazwie nawiasy kwadratowe?