Comment télécharger des fichiers dans le asp.net core?
Comment télécharger des fichiers ou des images à l'aide de Asp.net MVC 6 avec un certain modèle de données?
Exemple, j'ai un formulaire comme ceci;
<form>
<input type="file">
<input type="text" placeholder="Image name...">
<input type="text" placeholder="Image description...">
<input type="submit" value="Submit">
</form>
J'ai lu de nombreux Tutoriels dans la façon de télécharger, mais je ne vois rien de télécharger certaines données comme le formulaire ci-dessus.
Aussi, est-il une bibliothèque pour la manipulation d'images pour le re-dimensionnement et le Filigrane d'Image même que Codeigniter de manipulation de l'image de la classe? (https://codeigniter.com/user_guide/libraries/image_lib.html
- Semble que cela a été publié récemment -> docs.microsoft.com/en-us/aspnet/core/mvc/models/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter une nouvelle propriété de type
IFormFile
pour votre modèle de vueet OBTENIR votre méthode d'action, nous allons créer un objet de ce modèle de vue et de les envoyer à la vue.
Maintenant dans votre Créer une vue fortement typée pour notre modèle de vue, ont un
form
balise qui a leenctype
attribut"multipart/form-data"
Et votre HttpPost d'action pour gérer la publication de formulaires
Si vous voulez télécharger le fichier dans un répertoire de votre application, vous devez utiliser
IHostingEnvironment
pour obtenir la racine de votre site chemin. Voici un échantillon de travail.Cela permettra d'enregistrer le fichier à
uploads
dossier à l'intérieurwwwwroot
répertoire de votre application avec un nom de fichier aléatoire généré à l'aide de Guid ( pour éviter d'écraser des fichiers avec le même nom)Nous voici à l'aide d'une très simple
GetUniqueName
méthode permettant d'ajouter 4 caractères à partir d'un guid à la fin du nom de fichier pour le rendre un peu unique. Vous pouvez mettre à jour la méthode pour le rendre plus sophistiqué que nécessaire.Devriez-vous être de stocker l'url complète de l'image téléchargée dans la base de données ?
Pas. Ne pas stocker l'url complète de l'image dans la base de données. Que faire si demain votre entreprise décide de changer votre société nom du produit de
www.thefacebook.com
àwww.facebook.com
? Maintenant, vous devez corriger toutes les url de la table!Que devriez-vous stocker ?
Vous devez conserver le nom de fichier unique qui vous avez généré ci-dessus(la
uniqueFileName
varibale nous avons utilisé ci-dessus) pour stocker le nom du fichier. Lorsque vous souhaitez afficher l'image en arrière, vous pouvez utiliser cette valeur (le nom de fichier) et de construire l'url de l'image.Par exemple, vous pouvez le faire dans votre vue.
Je viens de codé en dur un nom d'image à
imgFileName
variable et utilisé. Mais vous pouvez lire le fichier enregistré le nom de votre base de données et mis à votre modèle de vue de la propriété et de l'utilisation que. Quelque chose commeStockage de l'image à la table
Si vous souhaitez enregistrer le fichier en tant que bytearray/varbinary à votre base de données, vous pouvez convertir le
IFormFile
objet de tableau d'octets comme ceMaintenant dans votre post http méthode d'action, vous pouvez appeler cette méthode pour générer le tableau d'octets à partir
IFormFile
et l'utiliser pour enregistrer à votre table. l'exemple ci-dessous est en essayant de sauver une entité Post objet à l'aide de entity framework.enctype="multipart/form-data"
?enctype="multipart/form-data"
de ma forme. Toute idée de ce que pourrait être le problème? Le IFormFile est toujours null.set;
. Assurez-vous également que le nom de fichier d'entrée correspond à votre nom de la propriété.FileMode.Create
sinon un 0kb fichier a été créé qui a été utilisé par .net jusqu'à ce que j'ai arrêté de débogagevar newfile = new FileStream(filePath, FileMode.CreateNew); file.CopyTo(newfile); newfile.Close();
model
. Mise à jour de la réponse.vous pouvez essayer de code ci-dessous
1 - modèle ou modèle de vue
2 - Afficher la page
3 - Contrôleur de