2017-10-10 8 views
1

OK ... alors voici quelque chose que je ne sais même pas si c'est possible. Est-il possible de télécharger un fichier image pendant la phase initiale d'une première migration de code? Par exemple, lors de la création d'un utilisateur du site initial ou d'un utilisateur admin ayant une image portrait, est-il possible de télécharger cette image lors de la création initiale de cet utilisateur? Je ne pouvais pas trouver quelque chose de pertinent dans SO ou en ligne qui serait même proche de suggérer même une solution viable, donc cela pourrait être la première fois que quelque chose comme ça a même été tenté.Télécharger une image pendant l'exécution de la première migration de code

+0

Où voulez-vous le "télécharger"? Vous pouvez le graver dans le champ DB si c'est une solution viable pour vous. – OctoCode

+0

Je préfère ne pas "graine" dans la base de données plutôt le télécharger sur un "repo" pour tous les portraits en utilisant un GUID pour le nom de l'image. C'est ce que j'utilise dans l'environnement de production et je le reproduirais en quelque sorte dans la migration (si possible) –

Répondre

1
  1. Commencez par créer le nouveau fichier de migration (ou utilisez le fichier existant).
  2. La méthode Inside Up() vous permet de mettre du code pour le téléchargement de fichier , et dans le code de méthode Down() pour le retrait de fichier de repo (au cas où vous souhaitez annuler la migration).

Ci-dessous est l'une des nombreuses façons de faire un peu le téléchargement à distance, c'est l'un des plus simples:

using (var webClient = new WebClient()) 
{ 
    webClient.UploadFile("ftp://localhost/samplefile.jpg", "samplefile.jpg"); 
} 

Pour cela, vous devez travailler ajouter using System.Net; au fichier de migration. En outre, vous devez évidemment gérer les autorisations de téléchargement et les informations d'identification, en fonction du type de référentiel distant que vous utilisez.

EDIT:

L'utilisation du fichier objet est encore plus trivial. Voici le code complet pour la classe de migration:

using System; 
using System.Data.Entity.Migrations; 
using System.IO; 

public partial class MigrationWithFileCopy : DbMigration 
{ 
    public override void Up() 
    { 
     File.Copy("sourceFile.jpg", "destinationFile.jpg"); 
    } 

    public override void Down() 
    { 
     File.Delete("destinationFile.jpg"); 
    } 
} 
+0

Je vais implémenter cela, essayez-le et faites le savoir. Merci :) –

+0

Peut-il être utilisé comme system.io au lieu de system.net? comme en utilisant l'objet fichier système? Si possible, je voudrais utiliser le chemin de la carte du serveur pour la destination plutôt qu'un URI. –

+0

NICE !!! Merci pour la variante. Je vais tester et revenir à vous dès que possible. –