2016-07-28 18 views
3

Hallo Ich verwende diesen C# -Code für Bilder hochladen.Warum bekomme ich einen weiteren Charakter?

protected void UploadFile(object sender, EventArgs e) 
{ 
    string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
    string contentType = FileUpload1.PostedFile.ContentType; 
    using (Stream fs = FileUpload1.PostedFile.InputStream) 
    { 
     using (BinaryReader br = new BinaryReader(fs)) 
     { 
      byte[] bytes = br.ReadBytes((Int32)fs.Length); 
      string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
      using (MySqlConnection con = new MySqlConnection(constr)) 
      { 
       string query = "INSERT INTO foto(FileName, ContentType, Content) VALUES (@FileName, @ContentType, @Content)"; 
       using (MySqlCommand cmd = new MySqlCommand(query)) 
       { 
        cmd.Connection = con; 
        cmd.Parameters.AddWithValue("@FileName", filename); 
        cmd.Parameters.AddWithValue("@ContentType", contentType); 
        cmd.Parameters.AddWithValue("@Content", bytes); 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
      } 
     } 
    } 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 

Ich lade das Bild in einem LONGBLOB Feld, dann das Bild zu zeigen, dass ich C# WebService verwenden, AJAX, JavaScript, um das Bild zu Base64String Umwandlung aber Bild wird wie angezeigt, wenn nicht vorhanden.

Hier ist mein Base64String:

Base64String

Wie Sie das Problem mit diesen zusätzlichen Zeichen sehen:

AAEAAAD/////AQAAAAAAAAAPAQAAAHgBAAAC 

Warum geschieht das? Und wie kann ich es lösen?

+1

Das ist eine Serialisierungskopfzeile im Binärformat, die ungerade ist. Haben Sie sich die Daten in der Tabelle angesehen? Enthält es diese Bleibytes? Wenn nicht, müssen Sie den Code zeigen, lädt und liest die Daten vor dem ToBase64String-Aufruf –

Antwort

0

können Sie die bellte Linien mit Ihrem obigen Code ersetzen

 protected void UploadFile(object sender, EventArgs e) 
     { 
     string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
     string contentType = FileUpload1.PostedFile.ContentType; 
     using (Stream fs = FileUpload1.PostedFile.InputStream) 
      { 
      using (BinaryReader br = new BinaryReader(fs)) 
       { 
       System.Drawing.Image imagetuUpload = System.Drawing.Image.FromStream(fs); 

       Bitmap bitmap = new Bitmap(imagetuUpload); 
       System.IO.MemoryStream stream = new MemoryStream(); 
       bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); 
       stream.Position = 0; 
       byte[] upproimag = new byte[stream.Length + 1]; 
       stream.Read(upproimag, 0, upproimag.Length); 

       string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
       using (MySqlConnection con = new MySqlConnection(constr)) 
        { 
        string query = "INSERT INTO foto(FileName, ContentType, Content) VALUES (@FileName, @ContentType, @Content)"; 
        using (MySqlCommand cmd = new MySqlCommand(query)) 
         { 
         cmd.Connection = con; 
         cmd.Parameters.AddWithValue("@FileName", filename); 
         cmd.Parameters.AddWithValue("@ContentType", contentType); 
         cmd.Parameters.AddWithValue("@Content", upproimag); 
         con.Open(); 
         cmd.ExecuteNonQuery(); 
         con.Close(); 
         } 
        } 
       } 
      } 
     Response.Redirect(Request.Url.AbsoluteUri); 
     } 

ich es Ihnen helfen, hüpfen kann :)

+0

für Ansicht auf C# asp.net Seite verwenden Sie unter Code imguser.ImageUrl = "data: image/jpg; base64" + Convert.ToBase64String (SQL-Blob); –

+0

War ein Problem beim Aufruf des Bildes! aber danke für deine Hilfe –

0

lange Zeit war ich in derselben Ausgabe i andere mich nicht erinnern, als dies damals zu tun:

ich überprüfen, ob ich falsch bin oder nicht hier gehen:

http://jsfiddle.net/hpP45/ 

Ich versuche zu entschlüsseln erste (google bse64 Decoder)

https://www.base64decode.org/ 

und Binärdaten als eine JPEG-Datei speichern decodiert und öffnen.

wenn es nicht dann denke ich nicht öffnet, kann es sein Problem auf Base64-Kodierung