11
votes

Téléchargement de fichiers multiples à l'aide de C # sur ASP.NET 4.0 Environnement

Je cherche une solution pour télécharger plusieurs fichiers (cliquez sur le bouton Parcourir et sélectionnez plusieurs fichiers à l'aide de la touche Maj).

Je vois plusieurs solutions qui doivent être téléchargées une par une en cliquant sur le bouton Parcourir, puis cliquez sur le bouton Soumettre. Mais je dois permettre aux utilisateurs de sélectionner plusieurs fichiers en même temps.


0 commentaires

6 Réponses :


5
votes

Le est fortement verrouillé par le navigateur Web en raison de problèmes de sécurité. Il n'autorise pas plusieurs sélections de fichiers. Vous devrez utiliser Flash ou Silverlight pour le faire ou utiliser plusieurs champs.

Vous pouvez autoriser l'utilisateur à sélectionner un fichier, puis à fournir un bouton "Ajouter un autre fichier", qui génère une autre entrée de téléchargement de fichier à l'aide de jQuery. Vous seriez en mesure d'autoriser un nombre indéfini de téléchargements de cette façon, mais l'utilisateur devra naviguer pour chacun d'eux individuellement.

Sur une note latérale, HTML 5 prend en charge plusieurs téléchargements de fichiers, mais il n'est pas largement implémenté dans les navigateurs Web actuels et n'est donc pas une option.


2 commentaires

Bon aperçu. Personnellement, je recommanderais Flash.


Tous les liens à utiliser pour mettre en œuvre la lumière flash / argent? L'utilisateur doit télécharger Flash et / ou Silver Light Client?



1
votes

Comme Justin a dit que vous devriez utiliser Flash ou Silverlight. J'ai pris ce dernier des deux et je suis très heureux.

Jetez un coup d'œil au Silverlight Multi Fichier Uploader sur CodePlex. C'est ce que j'ai utilisé et ça a été génial. Il est également très facile de personnaliser pour répondre à vos besoins. Il est téléchargé environ 10 000 images pour moi jusqu'à présent et n'avez jamais manqué un battement.


0 commentaires

-1
votes

-1
votes

Vous pouvez utiliser la fonctionnalité de Drag and Drop's de JQERYFILEUPLOAD, nous l'utilisons pour notre CMS et nos utilisateurs semblent satisfaits de la solution, vous pouvez essayer le site de démonstration ici . Il suffit de déposer autant de fichiers que vous le souhaitez et de le voir en action, il est hautement personnalisable.


0 commentaires

6
votes

Définissez la propriété "ALLERDMULTIPLE = TRUE" comme ci-dessous. Cette propriété est disponible pour 4.5 Cadre.

protected void btnFileUpload_Click(object sender, EventArgs e)
{
    try
    {
        if (file_upload.HasFile && file_upload.PostedFiles.All(x => x.ContentType == "image/jpeg" && x.ContentLength < 102400))
        {
            foreach (var file in file_upload.PostedFiles)
            {
                file_upload.SaveAs(Server.MapPath("~/") + Path.GetFileName(file.FileName));
            }
            lblUploadStatus.Text = "File(s) uploaded successfully.";
        }
        else
        {
            lblUploadStatus.Text = "Please upload proper file.";
        }
    }
    catch (Exception ex)
    {
        lblUploadStatus.Text = "Error in uploading file." + ex.Message;
    }
}


3 commentaires

La propriété AllowMultiple n'est accessible que pour les utilisateurs de .NET 4.5 et, en tant que tel, cela ne fonctionnera pas si vous ciblez uniquement le cadre 4.0. Il est impossible de définir le champ Filedupload pour autoriser plusieurs fichiers sans utiliser l'une des méthodes décrites ci-dessus si vous utilisez 4.0.


@Mattd oui j'ai oublié de mentionner le cadre que j'utilise


Pas de soucis, je voulais juste le mentionner pour sauver les autres du mal à la tête que j'ai. Impossible d'utiliser 4.5 où je suis à ce moment-là, la propriété que vous mentionnez est inutile pour moi, mais je dois aussi travailler avec IE9, ce qui signifie que la propriété multiple pour même le contrôle HTML générique gagné ' t Travaux. :(



6
votes

Nous utilisons le plugin ci-dessous pour nous aider.

JQUERY MULTIPUM. Plugin de téléchargement de fichier p>

après incluant le fichier js code> nécessaire: jquery.multifile.pack.js code>, nous pouvons l'utiliser comme ci-dessous. p> xxx pré>

donnant class = "multi" code> le fait d'accepter plus d'un fichier. p>

Vous pouvez également appliquer les contraintes si vous le souhaitez. Comme class = "max-3" code> permettrait de télécharger au maximum trois fichiers. class = "accepter-gif | jpg" code> n'autoriserait les fichiers avec gif code> ou jpg code> extensions à télécharger. p>

Pour obtenir les multiples fichiers du côté SEU, vous devrez inclure l'espace de noms code>: system.web; code> p>

alors vous pouvez avoir le code ci-dessous pour Itération à travers chaque fichier téléchargé. P>

if (Request.Files.Count > 0)
{
    HttpFileCollection attachments = Request.Files;
    for (int i = 0; i < attachments.Count; i++)
    {
        HttpPostedFile attachment = attachments[i];
        if (attachment.ContentLength > 0 && !String.IsNullOrEmpty(attachment.FileName))
        {
            //do your file saving or any related tasks here.
        }
    }
}


1 commentaires

Cela ne fonctionne pas. Le téléchargement de fichier Saveeas enregistre le même contenu du premier fichier juste avec le nouveau nom de fichier