Donc, soit personne n'a encore essayé de le faire, soit je ne trouve rien là-dessus. L'ancienne façon de télécharger un fichier est la suivante :
``` c#
classe publique FileStorage
{
chaîne publique NomFichier { get; ensemble; }
public byte[] FileStore { get; ensemble; }
}
``` c#
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create(HttpPostedFileBase file)
{
FileStorage fileAttachment = new FileStorage();
using (Stream inputStream = file.InputStream)
{
MemoryStream memoryStream = inputStream as MemoryStream;
//Check to see if stream returned is already a MemoryStream
if(memoryStream == null)
{
memoryStream = new MemoryStream();
inputStream.CopyTo(memoryStream);
}
fileAttachment.FileStore = memoryStream.ToArray();
fileAttachment.FileName = file.FileName;
}
if (ModelState.IsValid)
{
db.FileAttachment.Add(fileAttachment);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}
Je sais que .Net Core utilise IFormFile mais toutes les ressources que j'ai trouvées pour l'enregistrer parlent de l'enregistrer dans le dossier wwwroot sur le serveur Web. Je transmets avec succès le fichier à mon contrôleur, mais je n'ai pas réussi à comprendre comment le convertir en octet [] pour l'enregistrer dans la table DB FileStream.
IFormFile
contient une méthode CopyTo(Stream)
. Le passage à celui-ci ne ressemblerait-il pas assez à ce que vous avez ici ?
Merci pour votre réponse rapide. J'ai essayé de l'utiliser juste après votre commentaire et au début, j'ai pensé que je ne pouvais pas le trouver car nous n'exécutions pas la dernière version de .net core. J'ai installé le dernier et mis à jour mon projet pour utiliser le nouveau runtime, mais CopyTo ne semble pas être une option pour IFormFile.
Si l'une des informations ci-dessous m'aide, je pourrais vraiment utiliser votre aide pour me diriger dans la bonne direction.
Version du SDK DNX de la solution : 1.0.0-rc1-update2
dnx --version
Environnement d'exécution Microsoft .NET
Version : 1.0.0-rc1-16609
Type : Clr
Architecture : x86
Nom du système d'exploitation : Windows
Version du système d'exploitation : 6.3
Identifiant d'exécution : win81-x86
Version actuelle de dnvm (par défaut) : 1.0.0-rc1-update2 clr
VS Pro 2015 Mise à jour 3
La méthode a été introduite dans le cadre de RC2 qui explique pourquoi vous ne la voyez pas. La mise à jour devrait résoudre ce problème. Cela devrait vous devriez envisager de passer de dnx -> dotnet. Le premier n'est plus pris en charge et les packages RC2 et ultérieurs pourraient ne plus être compatibles avec dnx (voir https://github.com/aspnet/Announcements/issues/176).