Я пытаюсь хранить и извлекать изображения из MongoDB (Gridfs) и отображать изображение с помощью HTML.Сохранение и получение изображения из MongoDB (GridFs) и отображение в Html с помощью vb.net webservice
Я сохранил изображение и получил идентификатор изображения, передав идентификатор на HTML-страницу с помощью Ajax, он принимает идентификатор изображения, но изображение не отображается. Может кто-нибудь мне направить.
Вот мой код:
HTML код:
<html>
<head>
</head>
function display() {
$.ajax({
type: 'POST',
url: 'xidirectorywebservice.asmx/UploadImage',
data: "{ }",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (image_string)
{
var data = 'data:image/png;base64,' + image_string.d;
var icon_elem = document.getElementById("ItemPreview"); //adding img id
icon_elem.src = data;
$(document.body).append(image_string.d);
},
error: function() {
alert("Error");
}
});
}
</script>
</head>
<body onload="display()">
<img id="ItemPreview" src="" />
</body>
</html>
vb.net (Webservice) Код:
XIImage класс:
Imports MongoDB.Bson
Public Class XIImage
Public Property _id As ObjectId
Public Property name As String = ""
Public Property title As String = ""
Public Property image As Byte()
Public Property ImageId() As ObjectId
End Class
Код:
Public Function UploadImage() As String
Dim server As MongoServer = MongoServer.Create("mongodb://localhost")
Dim db As MongoDatabase = server("imagedemo")
Dim collection As MongoCollection = db("demo")
Dim imageBook As New XIImage
imageBook._id = New ObjectId()
imageBook.name = "Tom Sawyer"
imageBook.title = "Content of the book goes here"
imageBook.image = file.ReadAllBytes("C:\Users\Prog23\Desktop\wallpapers-41.jpg")
Dim memoryStream As Stream = New MemoryStream(imageBook.image)
Dim gfsi As MongoGridFSFileInfo = db.GridFS.Upload(memoryStream, imageBook.name)
imageBook.ImageId = gfsi.Id.AsObjectId
collection.Insert(imageBook)
Dim id As New ObjectId(imageBook.ImageId.ToString())
Dim sfile As MongoGridFSFileInfo = db.GridFS.FindOne(Query.EQ("_id", id)
Using stream = sfile.OpenRead()
Dim sid = sfile.Id
MsgBox(sid.ToString())
End Using
End Function
Но когда я запрашиваю в приглашении оболочки, я могу видеть двоичный формат изображения. Любая помощь будет оценена. ура.
Спасибо за ответ. Это сработало для меня, проблема была в преобразовании байтов в Base64, поскольку я хотел передать значение html, чтобы отобразить его, а не создавая образ с другим именем. Вместо этого я использовал это для преобразования и передачи значения в Ajax: base64String = System.Convert.ToBase64String (bytes, 0, bytes.Length) – pavan