memoryn Sie die imagedatei auf dem dataträger aus den imagedaten in der SQL-Tabelle

Ich habe eine sql Tabelle, die imageer im varbinary Format speichert. Ich möchte die imagedaten aus der SQL-Tabelle nehmen und als imagedatei auf meinem System speichern.

$getPhotos = "SELECT Name, PhotoContent FROM [Photos]"; $resultPhotos = odbc_exec($con, $getPhotos); while($post = odbc_fetch_array($resultPhotos)){ $fileData = $post['PhotoContent']; $fileName = "D:\\Images\\".$post['Name']; file_put_contents($fileName,str_replace('data:image/jpeg;base64,','',$fileData)); } 

Der obige Code speichert die imagedatei auf dem System, aber das gespeicherte image ist defekt.

Bildbeschreibung hier eingeben

Wie kann ich dieses Problem beheben?

Vielen Dank

Ok, das kannst du alles in MS SQL machen. Da weiß ich nichts über PHP.

Also zuerst das ist mein Tisch unten. Bildbeschreibung hier eingeben

1) Erstellen Sie Blob-Format-file, so können Sie Ihren Blob zu exportieren.

  DECLARE @sql VARCHAR(500) SET @sql = 'bcp DatabaseName.dbo.Blob format nul -T -n -f C:\Users\Public\Documents\blob.fmt -S ' + @@SERVERNAME SELECT @sql EXEC master.dbo.xp_CmdShell @sql 

Formatdatei formatieren Formatdatei formatieren

2) Bearbeiten Sie die Formatdatei. Halten Sie nur die Spalte Inhalt.

2.1) Originalformat Bildbeschreibung hier eingeben

2.2) Ändern Sie das Format wie unten Bildbeschreibung hier eingeben

3) Schließlich habe ich eine gespeicherte Prozedur, die alle varbinary data in .jpb (Sie können es auch in verschiedenen Format nicht nur .jpg).

 CREATE PROCEDURE BLOBImageExport AS SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET NOCOUNT ON IF OBJECT_ID('tempdb..#export') IS NOT NULL DROP TABLE #export DECLARE @imgID INT, @imgName VARCHAR(128), @sql VARCHAR(8000) SELECT * INTO #export FROM Blob WHILE (SELECT COUNT(*) FROM #export) > 0 BEGIN SELECT TOP 1 @imgID = ID, @imgName = imgName FROM #export SET @sql = 'BCP "SELECT Content FROM DATABASENAME.dbo.Blob WHERE ID = ' + CONVERT(VARCHAR(10), @imgID) + '" QUERYOUT C:\Users\Public\Documents\' + '' + @imgName + '' + ' -T -f C:\Users\Public\Documents\blob.fmt -S ' + @@SERVERNAME EXEC master.dbo.xp_CmdShell @sql DELETE #export WHERE ID = @imgID END 

4) Jetzt können Sie die imageer unten sehen Bildbeschreibung hier eingeben

4.1) Buchhalter image Bildbeschreibung hier eingeben

4.2) Buchhalter2 image Bildbeschreibung hier eingeben

5) So könntest du entweder in PHP alle imageer auf dein bestimmtes Laufwerk kopieren oder SSIS verwenden oder den memoryort in Stored Procedure ändern, wo du auf Festplatte speichern willst.

Hoffe das hilft.

Im MySQL server kannst du diesen Code benutzen:

 using MySql.Data.MySqlClient; using System.IO; using System.Globalization; int i=0; //variable for image name MySqlConnection conn = new MySqlConnection("SERVER=127.0.0.1;DATABASE=test;UID=root;PASSWORD=1234"); conn.Open(); MySqlCommand cmd = new MySqlCommand("SELECT signature FROM imageTble ", conn); MySqlDataReader myReader = null; myReader = cmd.ExecuteReader(); byte[] imgg = (byte[])(myReader["signature"]); while (myReader.Read()) { i = i + 1; File.WriteAllBytes(@"C:\Users\Admin\Desktop\New folder\IMAGES\" + i + ".tiff", imgg); } 

Wenn Sie MS SQl database verwenden, können Sie:

 using System.Data.Sql; 

referance und verwendet sqlkeyword instaent von MYSql

 Eg----> SqlConnection, SqlCommand,SqlDataReader