ASP.NET Core, MVC, Obtenir le fichier de base de données, et le rendu de l'image
J'ai des données d'image stockées dans une table SQL avec un champ de type de varbinary(max) j'ai également stocker le contenu d'une image de type.
À l'aide de Microsoft ASP.NET Core, MVC et Pimpant, je suis en train d'essayer d'obtenir le fichier de la base de données et de les rendre comme une image.
C'est mon FileModel:
using System;
namespace Brand.Models
{
public class FileModel
{
public Guid ID { get; set; }
public string FileName { get; set; }
public string FileType { get; set; }
public byte[] FileData { get; set; }
public int FileLength { get; set; }
public long Version { get; set; }
public string FileSource { get; set; }
public DateTime Created { get; set; }
public FileModel()
{
FileLength = 0;
Version = 1;
Created = DateTime.Now;
}
}
}
Ce sont mes fonctions:
public FileStreamResult GetFile(string FileID)
{
return GetFile(new Guid(FileID));
}
public FileStreamResult GetFile(Guid FileID)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
DynamicParameters dynamicParameters = new DynamicParameters();
dynamicParameters.Add(@"ID", FileID);
FileModel result = connection.Query<FileModel>("GetFile", dynamicParameters, commandType: CommandType.StoredProcedure).FirstOrDefault();
Stream stream = new MemoryStream(result.FileData);
return new FileStreamResult(stream, result.FileType);
}
}
J'appelle cela avec ce genre de syntaxe:
<img src="@fileExtensions.GetFile(content.FileID)" />
Je reçois une réponse 404 quand j'ai essayer ça, donc évidemment quelque chose de mal avec la façon dont je suis la mise en œuvre de cette.
OriginalL'auteur eat-sleep-code | 2016-06-21
Vous devez vous connecter pour publier un commentaire.
Le code ci-dessous est juste à côté de ma tête, de sorte qu'il pourrait avoir besoin de quelques ajustements, mais il vous donnera une idée de base.
Créer un nouveau contrôleur et de mettre vos méthodes:
ensuite, dans votre balise de référence du contrôleur:
OriginalL'auteur VaticanUK
Comme
@fileExtensions.GetFile(content.FileID)
retourne en fait unFileStreamResult
il ne serait pas en mesure de rendre à l'intérieur du html et probablement retourne justeFileStreamResult.ToString()
.Vérifier le rendu html!
Au lieu de ce que vous voulez faire est une fonction qui rend une url qui déclenche une action sur un contrôleur qui renvoie le
FileStreamResult
.Une autre solution consiste à insérer l'image, si c'est ce que vous voulez.
Alors vous devez coder votre image comme dans ce post: Convertir le chemin de l'image en base64 chaîne, mais utiliser votre flux de mémoire au lieu de la lecture de chemin d'accès.
OriginalL'auteur mollwe