IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Contrôler l'upload de fichier asp c#


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Contrôler l'upload de fichier asp c#
    Sur mon site je gère des articles
    en page modification d'un article on peut ajouter des images

    j'utilise le FileUpload d'asp pour trouver le fichier a charger

    <asp:FileUpload ID="PiecesJointes" runat="server" />

    et un bouton qui valide
    <asp:Button ID="Button1" runat="server" Text="OK" OnClick="ButtonOK_Click" />

    c'est dans le codebehind du bouton Ok que la validation et l'upload sont effectué


    Comment faire pour contrôler que la nouvelle image n'ai pas le même nom que celles déjà présente sur l'article

    ébauche code behind

    foreach (PieceJointe lpj in spj.GetListPieceJointeByArticle(ldArticle))
    {
    if (lpj.Titre == PiecesJointes.FileName)
    {

    }

    }

    lpj : ce sont les pièces jointes ou image de l'article
    piecejointe : la nouvelle pièce jointe ou image qui va être chargée

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Merci d'utiliser la balise CODE pour faciliter la lecture

    Tu as donné toi-même la réponse :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach (PieceJointe lpj in spj.GetListPieceJointeByArticle(ldArticle))
    {
        if (lpj.Titre == PiecesJointes.FileName)
        {
            // Ici tu crées un nouveau titre, comme par exemple en rajoutant l'heure en cours :
            lpj.Titre += string.Format(" {0}", DateTime.Now.ToString("o")).Replace(":", "-").Replace(".", "-"));
     
            // Ou bien en rajoutant un GUID :
            lpj.Titre += string.format(" {0}", Guid.NewGuid().ToString());
        }
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci je vais tester cela

    Le changement de nom je n'y avais pas pensé merci en tout cas
    mais dans le cas ou je ne prend pas deux fois la même image je pensais plutôt à des messages du style alert en java.
    ou desactiver / griser le bouton de validation (OK)

    Je ne vois pas bien comment faire dans ce cadre la puisque mon traitement se situe sur la validation (bouton OK)
    a voir

    Pour les balises CODE j'ai un bug : ne peux pas poster le message si il y a des balises code
    dsl

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Désactiver le bouton me semble une mauvaise idée, puisque du coup ton utilisateur ne pourra plus soumettre le fichier, même s'il a corrigé le nom

    Pour les alert en Javascript, tu peux injecter du javascript via le ClientScriptManager :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach (PieceJointe lpj in spj.GetListPieceJointeByArticle(ldArticle))
    {
        if (lpj.Titre == PiecesJointes.FileName)
        {
            // On injecte le javascript qui va afficher le message
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
              "err_msg", 
              "alert('Ton message ici...');",
              true);
     
            // On interromp le traitement
            return;
        }
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonsoir,

    La solution consistant à changer de nom ne fonctionne pas je me retrouve donc avec deux images identiques sur un article (mais avec différents ID)

    y a t il d'autres solution permettant de changer le nom d'un objet ?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par hauser11 Voir le message
    y a t il d'autres solution permettant de changer le nom d'un objet ?
    Ca c'est juste un algorithme à mettre en place... Dans Windows par exemple si tu as deux fichiers avec le même nom, il rajoute le suffixe " (x)", où x est un entier qui s'incrémente.

    Il y a d'autres façons de faire, comme celles que je t'ai exposé :
    - Rajouter la date, ou une partie de la date
    - Rajouter un GUID
    Bref l'idée est d'inclure dans le nom du fichier quelque chose d'unique.

    Si ton objectif est de ne pas avoir deux fois la même image, alors il faut créer une empreinte (un hash par exemple) des fichiers et la stocker en base. Ensuite lors de l'upload, tu parcours les empreintes liées à l'article pour voir si l'image existe déjà ou pas... Mais bon ce n'est pas fiable à 100% puisqu'il suffit par exemple de redimensionner l'image avant de l'uploader pour qu'elle soit acceptée, car le hash sera différent.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Le probleme viens de la

    quand j'upload un nouveaux fichier , une miniature est crée et affichée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private bool EstUneImage(string nomImage)
    {
     if(nomImage.EndWith("jpg")|| nomImage.Endwith("png")||...)
    {return true;}
    else{return false}
    }
    du coup en changeant le nom mon fichier ne termine plus par l'extension

    il faudrait que je puisse changer le nom avant le ".jpg"

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Points : 47
    Points
    47
    Par défaut
    Ce bout de code devrait t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string extension = fileName.Substring(fileName.LastIndexOf(".") + 1, fileName.Length - fileName.LastIndexOf(".") - 1);
    string nameWithoutExtension = fileName.Substring(0, fileName.LastIndexOf(".") - 1);

Discussions similaires

  1. Upload fichier ASP.NET Sous Win 2003 Server
    Par gymdev dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/07/2009, 12h20
  2. Contrôler le type de fichier uploadé
    Par Emilie012 dans le forum Langage
    Réponses: 3
    Dernier message: 01/10/2008, 10h30
  3. [AJAX] ASP[.NET], Upload de Fichiers
    Par mister3957 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/08/2007, 00h00
  4. [c#][asp.net2] upload de fichiers sur un serveur
    Par skystef dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/02/2007, 09h24
  5. Réponses: 3
    Dernier message: 07/09/2006, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo