Partage
  • Partager sur Facebook
  • Partager sur Twitter

Enregistrer un fichier dans un dossier

    7 septembre 2020 à 19:17:19

    Bonsoir , je travaille sur un projet asp.net core mvc et je souhaite récupérer un fichier dans un formulaire et enregistrer ce fichier dans un dossier.

    J'ai essayé plusieurs approche mais en vain.

    • Partager sur Facebook
    • Partager sur Twitter
      7 septembre 2020 à 21:00:32

      Il est où le dossier ? Sur le serveur ou sur le client ?

      Il est où le fichier ? Sur le serveur ou sur le client ?

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        8 septembre 2020 à 18:46:17

        Le dossier est sur la machine du client,

        En fait j'ai pu récupérer le fichier mais ça écrase le contenue du fichier et du coup il devient vide   

        ci-dessous le code 

        //Add Produit (code js)
        
        
        function showModelAddProduit() {
            $("#ModelAddProduit").modal("show");
        }
        function hideModelAddProduit() {
            $("#ModelAddProduit").modal("hide");
        }
        
        function AddProduit() {
            class Produit {
                Reference;
                Nom;
                Formule;
                CAS;
                Toxicite;
                EtatPhysique;
                UniteMesure;
                Perissable;
                TempMinStockage;
                TempMaxStockage;
                ConditionStockage;
                TypeGestion;
                StockMin;
                constructor() {
                    this.Reference = $("#reference").val();
                    this.Nom = $("#nom").val();
                    this.Formule = $("#formule").val();
                    this.CAS = $("#cas").val();
                    this.Toxicite = $("#toxicite").val();
                    this.EtatPhysique = $("#etatPhysique").val();
                    this.UniteMesure = $("#uniteMesure").val();
        
                    var valeur;
                    if (document.getElementById('optionsRadiosInline1').checked) {
                        valeur = 1;
                    }
        
                    else {
                        valeur = 0;
                    }
                    this.Perissable = valeur;
                    this.TempMinStockage = $("#tempMinStockage").val();
                    this.TempMaxStockage = $("#tempMaxStockage").val();
                    this.ConditionStockage = $("#conditionStockage").val();
                    this.TypeGestion = $("#typeGestion").val();
                    this.StockMin = $("#stockMin").val();
                }
            }
            //var p = this.Perissable = $("#perissable").val();
           // alert(p);
            $.validator.unobtrusive.parse($("#form"));
            if ($(form).valid()) {
        
                var uploadFile = $('#files').get(0)
                var files = uploadFile.files;
                var data = new FormData();
                for (var i = 0; i < files.length; i++) {
                    data.append(files[i].name, files[i]);
                }
        
                data.append("Reference", new Produit().Reference);
                data.append("Nom", new Produit().Nom);
                data.append("Formule", new Produit().Formule);
                data.append("CAS", new Produit().CAS);
                data.append("Toxicite", new Produit().Toxicite);
                data.append("EtatPhysique", new Produit().EtatPhysique);
                data.append("UniteMesure", new Produit().UniteMesure);
                data.append("Perissable", new Produit().Perissable);
                data.append("TempMinStockage", new Produit().TempMinStockage);
                data.append("TempMaxStockage", new Produit().TempMaxStockage);
                data.append("ConditionStockage", new Produit().ConditionStockage);
                data.append("TypeGestion", new Produit().TypeGestion);
                data.append("StockMin", new Produit().StockMin);
        
                $.ajax({
                    url: "/Produit/AddProduit",
                    type: "POST",
                    data: data,
                    contentType: false,
                    cache: false,
                    processData: false,
                    success: function (msg) {
                        ("ajax successsssssss " + msg.message)
                        hideModelAddProduit();
                        alertify.success(msg.message);
                        setTimeout(function () { location.reload(); }, 1000);
                    },
                    error: function () {
                        alert("error send images")
                    }
                });
        
               /* $.post("/Produit/AddProduit", { Produit: new Produit() }, function (result) {
                    if (result.success) {
                        hideModelAddProduit();
                        alertify.success(result.message);
                        setTimeout(function () { location.reload(); }, 1000);
                    }
                    else {
                        hideModelAddProduit();
                        alertify.error(result.message);
                    }
                });*/
            }
            else {
                return false;
            }
        }
        
        // Contoller  
        
        public class ProduitController : Controller
            {
                IWebHostEnvironment hostingEnvironment;
                public ProduitController(IWebHostEnvironment hostingEnvironment)// Injection de dependence par controller
                {
                    this.hostingEnvironment=hostingEnvironment;
                }
        
                public IActionResult Index()
                {
                    ViewBag.ListProduit = BLL_Produit.GetAll();
                    return View();
                }
        
                [HttpPost]
                public JsonResult AddProduit(Produit produit) //Action permettant d'ajouter un Produit
                {
                    try
                    {
                        string uniqueFileName = null;
                        var uploadfiles = Request.Form.Files;
                        foreach (var upfile in uploadfiles)
                        {
        
                            string uploadfile = Path.Combine(hostingEnvironment.WebRootPath, "FSD");
                            uniqueFileName = Guid.NewGuid().ToString() + "_" + upfile.FileName;
                            string Filepath = Path.Combine(uploadfile, uniqueFileName);
                            using (FileStream stream = new FileStream(Filepath, FileMode.Create))
                            {
                                 upfile.CopyToAsync(stream);
                            }
                        }
        
                        BLL_Produit.Add(produit);
                        return Json(new { success = true, message = "Ajout Effectuez" });
                    }
                    catch(Exception Ex)
                    {
                        return Json(new { success = false , message = Ex.Message });
                    }
                }
        }

        //Formulaire 

        <form id="form">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                    <h4 class="modal-title text-center" id="myModalLabel">Add Produit</h4>
                                </div>
                                <div class="modal-body">
                                    <div class="row">
                                        <div class="col-lg-6">
                                            <div class="form-group">
                                                <label for="reference">Reference <font color="blue">*</font></label>
                                                <input asp-for="Reference" class="form-control" id="reference" placeholder="Enterer la reference">
                                                @Html.ValidationMessageFor(model => model.Reference)
                                            </div>
                                            <div class="form-group">
                                                <label for="nom">Nom <font color="blue">*</font></label>
                                                <input asp-for="Nom" class="form-control" id="nom" placeholder="Enterer le Name">
                                                @Html.ValidationMessageFor(model => model.Nom)
                                            </div>
                                            <div class="form-group">
                                                <label for="formule">Formule <font color="blue">*</font></label>
                                                <input asp-for="Formule" class="form-control" id="formule" placeholder="Enterer la Formule">
                                                @Html.ValidationMessageFor(model => model.Formule)
                                            </div>
                                            <div class="form-group">
                                                <label for="cas">CAS <font color="blue">*</font></label>
                                                <input asp-for="CAS" class="form-control" id="cas" placeholder="Chemicals abstract service">
                                                @Html.ValidationMessageFor(model => model.CAS)
                                            </div>
                                            <div class="form-group">
                                                <label for="toxicite">Toxicite</label>
                                                <input asp-for="Toxicite" class="form-control" id="toxicite" placeholder="Enterer la Toxicite">
                                            </div>
                                            <div class="form-group">
                                                <label for="etatPhysique">Etat Physique</label>
                                                <input asp-for="EtatPhysique" class="form-control" id="etatPhysique" placeholder="Enterer l'Etat Physical">
                                            </div>
                                            <div class="form-group">
                                                <label>Perissable</label>
                                                <label>  </label>
                                                <label>  </label>
                                                <label class="radio-inline">
                                                    <input type="radio" name="optionsRadiosInline" id="optionsRadiosInline1" value="1" checked>Oui
                                                </label>
                                                <label class="radio-inline">
                                                    <input type="radio" name="optionsRadiosInline" id="optionsRadiosInline2" value="0">Non
                                                </label>
                                            </div>
                                        </div>
                                        <div class="col-lg-6">
                                            <div class="form-group">
                                                <label for="uniteMesure">Unite Mesure</label>
                                                <input asp-for="UniteMesure" class="form-control" id="uniteMesure" placeholder="Enterer l'Unit de Mesure">
                                            </div>
                                            <div class="form-group">
                                                <label for="tempMinStockage">Temps Minimum Stockage</label>
                                                <input asp-for="TempMinStockage" class="form-control" id="tempMinStockage" placeholder="Enterer le Temps Mininum de Stockage">
                                            </div>
                                            <div class="form-group">
                                                <label for="tempMaxStockage">Temps Maximum Stockage</label>
                                                <input asp-for="TempMaxStockage" class="form-control" id="tempMaxStockage" placeholder="Enterer le Temps Maximum de Stockage">
                                            </div>
                                            <div class="form-group">
                                                <label for="conditionStockage">Condition de Stockage</label>
                                                <input asp-for="ConditionStockage" class="form-control" id="conditionStockage" placeholder="Enterer la condition de stockage ">
                                            </div>
                                            <div class="form-group">
                                                <label for="typeGestion">Type de Gestion</label>
                                                <input asp-for="TypeGestion" class="form-control" id="typeGestion" placeholder="Enterer le Type Gestion ">
                                            </div>
                                            <div class="form-group">
                                                <label for="stockMin">Stock Minimum</label>
                                                <input asp-for="StockMin" class="form-control" id="stockMin" placeholder="Enterer le Stock Minimum">
                                            </div>
                                            <div class="form-group">
                                                <label>Fiche de sécurité du produit </label>
                                                <input type="file" id="files" name="files" multiple>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                <div class="modal-footer">
                                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                    <button type="button" class="btn btn-primary" onclick="AddProduit(form)">Save changes</button>
                                </div>
                            </form>




        -
        Edité par Bk@Gnome 8 septembre 2020 à 19:12:21

        • Partager sur Facebook
        • Partager sur Twitter
          9 septembre 2020 à 11:02:08

          Sans doute pas lié à ton problème, mais quand tu fais:

                  data.append("Reference", new Produit().Reference);
                  data.append("Nom", new Produit().Nom);
                  data.append("Formule", new Produit().Formule);
                  data.append("CAS", new Produit().CAS);

          à chaque fois tu crées un nouvel objet Produit dont tu ne récupères qu'une des propriétés; tu devrais plutôt faire:

                  var prod = new Produit()
                  data.append("Reference", prod.Reference);
                  data.append("Nom", prod.Nom);
                  data.append("Formule", prod.Formule);
                  data.append("CAS", prod.CAS);
              [...]

          Et je crois qu'il nous manque la fonction BLL_Produit.Add(produit), je crois que c'est elle qui ajoute le produit et donc créé le fichier final (si j'ai bien compris) et qui se retrouve vide (?)

          PS: dans les placeholders, on écrit "Entrez" et pas "Enterer" (ou alors Enterrer, mais bon je doute que ce soit le bon verbe :D ); et "Ajout Effectué" pas "Ajout Effectuez"

          • Partager sur Facebook
          • Partager sur Twitter
            9 septembre 2020 à 14:22:04

            Ce n'est pas à moi de créer le fichier , je le récupère via un formulaire et je l’enregistre dans un dossier

            <div class="form-group">
            
                     <label>Fiche de sécurité du produit </label>
                      <input type="file" id="files" name="files" multiple>
            </div>

            La méthodes BLL_Produit.Add(produit) est une méthode static de la classe BLL_Produit (Couche Présentation des données)

            et fait appelle à la méthode static DAL_Produit.Add(produit) de la classe DAL_Produit  (Couche d’Accès au Donnée).

            En fait c'est moi qui implémente mes propres requêtes

            ////BLL_Produit.Add(produit)

            public static void Add(Produit produit)
                    {
                        DAL_Produit.Add(produit);
                    }



            /////DAL_Produit.Add(produit)

             public static void Add(Produit produit)
                    {
                        using (SqlConnection con = DbConnection.GetConnection())
                        {
                            string StrSQL = "INSERT INTO Produit (Reference, Nom, Formule, CAS,Toxicite,EtatPhysique,UniteMesure,Perissable,TempMinStockage,TempMaxStockage,ConditionStockage,TypeGestion,StockMin)" +
                                " VALUES (@Reference, @Nom, @Formule, @CAS,@Toxicite,@EtatPhysique,@UniteMesure,@Perissable,@TempMinStockage,@TempMaxStockage,@ConditionStockage,@TypeGestion,@StockMin)";
                            SqlCommand command = new SqlCommand(StrSQL, con);
                            command.Parameters.AddWithValue("@Reference", produit.Reference ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@Nom", produit.Nom ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@Formule", produit.Formule ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@CAS", produit.CAS);
                            command.Parameters.AddWithValue("@Toxicite", produit.Toxicite ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@EtatPhysique", produit.EtatPhysique ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@UniteMesure", produit.UniteMesure ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@Perissable", produit.Perissable);
                            command.Parameters.AddWithValue("@TempMinStockage", produit.TempMinStockage ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@TempMaxStockage", produit.TempMaxStockage ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@ConditionStockage", produit.ConditionStockage ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@TypeGestion", produit.TypeGestion ?? (object)DBNull.Value);
                            command.Parameters.AddWithValue("@StockMin", produit.StockMin ?? (object)DBNull.Value);
                            DataBaseAccessUtilities.NonQueryRequest(command);
                        }
                    }




            • Partager sur Facebook
            • Partager sur Twitter
              9 septembre 2020 à 16:44:15

              Pour répondre à la question de bachelar, tu récupères des fichiers de l'utilisateur (client) que tu veux télécharger (en les renommant) dans un dossier sur ton serveur; en principe, il ne peut pas y avoir d'écrasement de fichier puisque tu génères un nom unique.

              Je me demanderai d'abord si tu récupères bien les bons noms de fichiers dans ton code (si tu ne l'as pas déjà vérifié) en affichant/regardant leur nom au début de la boucle foreach

              • Partager sur Facebook
              • Partager sur Twitter
                10 septembre 2020 à 15:18:11

                Merci umfred  j'ai pu résoudre le problème ,effectivement l'erreur se trouve dans la boucle foreach ,plus précisément à ce niveau

                using (FileStream stream = new FileStream(Filepath, FileMode.Create))
                                    {
                                         upfile.CopyToAsync(stream);
                                    }

                j'ai remplacé le bloc ci-dessus par celui-ci 

                upfile.CopyTo(new FileStream(Filepath, FileMode.Create));




                • Partager sur Facebook
                • Partager sur Twitter

                Enregistrer un fichier dans un dossier

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown