Мне нужно хранить изображения в базе данных MSSQL как часть обработки формы, которая обрабатывается PHP.
До этого мой клиент выполнял эту задачу со следующим кодом C #:
Dim content As Byte() = ImageToStream(fName)
cnn.Open()
Dim cmd As New SqlCommand("UPDATE lide SET pictPostava = @img WHERE ID = '" & GetValueToTextBox(iRow, "ID") & "'", cnn)
cmd.Parameters.AddWithValue("@img", content)
cmd.ExecuteNonQuery()
cnn.Close()
content = Nothing
Public Function ImageToStream(ByVal fileName As String) As Byte()
Dim stream As New MemoryStream()
tryagain:
Try
Dim image As New Bitmap(fileName)
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)
Catch ex As Exception
GoTo tryagain
End Try
Return stream.ToArray()
End Function
Я попытался скопировать его с помощью функции unpack () на основе http://php.net/manual/en/function.mssql-query.php#31688
// convert file
$file = file_get_contents('http://www.sunagency.cz/wp-content/uploads/2017/01/1745083-150x150.jpg');
$unpacked = "0x" . unpack("H*hex", $file);
// get the hexcode of image
print_r( $unpacked['hex'] );
Однако он не может его восстановить. И если честно, я тоже не уверен, как вернуть его обратно с помощью PHP - изменение заголовка на Image не решит проблему.
// view the packed file
header("Content-type: image/jpeg;");
echo $unpacked['hex'];
Не могли бы вы помочь? Я никогда не делал этого раньше и был бы более чем счастлив решить эту проблему.