-8
votes

Section de la gestion de fichiers pour un panneau d'administration

Je développe une application Web CRM pour mon client. Il inclut la gestion des clients, les paiements et ainsi de suite.

Les technologies que j'utilise:

  • ASP.NET MVC 5
  • EntityFramework 6
  • .NET Framework 4.5.2
  • BOOTSTRAP 3

    Maintenant, mon client souhaite ajouter un stockage de fichiers cloud comme Dropbox à l'application Web. Il devrait permettre de télécharger / supprimer des fichiers et des dossiers (pour les admins) et les utilisateurs réguliers doivent être autorisés à les télécharger.

    Je pense qu'il y a de bonnes solutions complètes pour cela, donc je ne réinventez pas la roue. OpenSource et les libres sont préférés. Je cherche un module que je pouvais simplement configurer et ajouter à mon application existante.


    mise à jour

    Je pense que la communauté m'a tort. Je ne cherche pas une solution de gestion de fichiers vraiment lourde. Ce qui est nécessaire, c'est quelque chose comme Masoud Bimar suggéré. Mais je cherche quelque chose de plus petit et plus simple.

    Je ne veux tout simplement pas réinventer la roue et c'est un peu ennuyeux pour moi de coder cela à partir de zéro.

    Je suis sûr que quelqu'un a déjà développé cette fonctionnalité.

    Encore une fois, une solution devrait simplement permettre:

    • Téléchargez un fichier dans un dossier local
    • Supprimer des fichiers du dossier local
    • créer des dossiers dans le dossier local
    • Supprimer des dossiers dans le dossier local

      Mon client l'utilisera occasionnellement et téléchargera au maximum 20 fichiers. Peut-être les supprimer et télécharger de nouveau temps à autre. C'est tout.


9 commentaires

questions nous demandant de recommander ou de trouver un livre, un outil, une bibliothèque logicielle, un didacticiel ou une autre ressource hors site sont hors tension pour débordement de pile


Ne pas être en désaccord avec vous @selvin, mais où devrait-il aller chercher tel? Lequel des autres "sites de pile" peut-il utiliser pour solliciter de l'aide? Peut-être qu'il peut être dirigé vers il ne revient pas ici avec cette question ou une question similaire.


@Eniola - softwarerecs.stackexchange.com


Je pense que ceci est également hors tension, il devrait donc être de poser des questions techniques et non des questions commerciales. Vous avez posé des questions sur Dropbox, vous pouvez trouver une réponse à ce sujet ici ici Stackoverflow.com/Questtions/24522682/USTION-Dropbox-in-mvc-4


@Zakkdiaz La question est technique. Je ne demande aucune affaire. La seule chose que je veux faire est de trouver un morceau de code qui aura une belle interface utilisateur et permettra de télécharger des fichiers dans un dossier sur le serveur où réside l'application ASP.NET MVC.


@AISMA Je sais ce que Amazon S3 est et ce n'est pas ce qui est nécessaire. La chose dont j'ai besoin est un simple code de gestion de fichiers qui permettra de télécharger quelques fichiers et de les stocker localement sur le serveur. Je ne veux tout simplement pas l'écrire moi-même depuis que je pense que ce n'est pas un code de science de fusée et que quelqu'un l'a déjà développé.


@kseen, d'accord, je l'ai eu, j'ai posté une réponse avec un exemple de la manière de stocker des fichiers localement sur le serveur. J'espère que cela aide.


Isma a donc résolu votre problème? Donne-lui un crédit s'il l'a fait. Si ce n'est pas la science de la roquette, alors ne gaspillez pas de temps d'ingénieurs professionnels avec quelque chose qui est en dessous de votre temps.


@AISMA Merci ISMA! Accepté votre réponse car c'était le plus proche de ce que je cherchais!


3 Réponses :


0
votes

J'ai utilisé celui-ci, construit avec une bibliothèque ElFinder.

gestionnaire de fichiers, avec elfinder.net. Répertoires de support, fichiers PDF, autorisations, nice UI.

J'étais complètement satisfait de cela.

paquets info: xxx

Responsentiel GitHub


0 commentaires

2
votes

Réinventer vraiment la roue est délicate, mais l'utilisation de packages tiers aura toujours une limitation.

J'utilise un godet S3 dans Amazon Web Services et que l'accès aux fichiers est via des informations d'identification, vous pouvez facilement limiter l'accès au fichier. En écrivant à la base de données lorsque vous téléchargez les utilisateurs qui ont l'accès. p>

Voici un exemple de téléchargement et de code de téléchargement. p>

Vous devrez installer le package AWS SDK Nuget.

https://aws.amazon.com/sdk-for-net / p>

lien avec l'explication de la création de références p>

https://docs.aws.amazon.com/fr/sdk-for-net/v2/developer -Guide / net-dg-setup.html # Net-DG-Signup P>

J'espère que cela peut aider d'une manière ou d'une autre

using Amazon.S3;
using Amazon.S3.Model;

public async Task<IActionResult> Upload(IFormFile file)
{
    BasicAWSCredentials awsCredentials = new BasicAWSCredentials("accessKey", "secretKey");
    IAmazonS3 clientAws = new AmazonS3Client(awsCredentials, Amazon.RegionEndpoint.EUCentral1);
    string urlTemp = Path.GetTempFileName();
    string extension = Path.GetExtension(file.FileName);
    Guid guid = Guid.NewGuid();
    string nameFile = guid + extension;
    string contentType = file.ContentType;

    using (var fileStream = new FileStream(urlTemp, FileMode.Create))
    {
        await file.CopyToAsync(fileStream);
    }

    try
    {
        // simple object put
        using (clientAws)
        {
            var request = new PutObjectRequest()
            {
                BucketName = "yourbucket",
                Key = nameFile,
                FilePath = urlTemp,
                ContentType = contentType
            };
            var response = await clientAws.PutObjectAsync(request);

            //write in your db
        }
    }
    catch (AmazonS3Exception amazonS3Exception)
    {
        if (amazonS3Exception.ErrorCode != null &&
            (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") ||
            amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
        {
            Console.WriteLine("Please check the provided AWS Credentials.");
            Console.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3");
        }
        else
        {
            Console.WriteLine("An error occurred with the message '{0}' when writing an object", amazonS3Exception.Message);
        }
    }

    return Ok();
}

public async Task<IActionResult> Download(string file)
{
    try
    {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials("accessKey", "secretKey");
        IAmazonS3 clientAws = new AmazonS3Client(awsCredentials, Amazon.RegionEndpoint.EUCentral1);

        GetObjectResponse response = new GetObjectResponse();

        string urlTemp = Path.GetTempPath();
        Guid guid = Guid.NewGuid();
        string nameFile = guid + ".pdf";

        try
        {
            // simple object put
            using (clientAws)
            {
                GetObjectRequest request = new GetObjectRequest();

                request.BucketName = "yourBucket";
                request.Key = file;
                response = await clientAws.GetObjectAsync(request);
                CancellationTokenSource source = new CancellationTokenSource();
                CancellationToken token = source.Token;
                await response.WriteResponseStreamToFileAsync(urlTemp + nameFile, true, token);


                var path = urlTemp + nameFile;
                var memory = new MemoryStream();
                using (var stream = new FileStream(path, FileMode.Open))
                {
                    await stream.CopyToAsync(memory);
                }
                memory.Position = 0;

                var fsResult = new FileStreamResult(memory, "application/pdf");
                return fsResult;

            }

        }
        catch (AmazonS3Exception amazonS3Exception)
        {
            if (amazonS3Exception.ErrorCode != null &&
                (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") ||
                amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
            {
                Console.WriteLine("Please check the provided AWS Credentials.");
                Console.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3");
            }
            else
            {
                Console.WriteLine("An error occurred with the message '{0}' when writing an object", amazonS3Exception.Message);
            }

        }
    }
    catch (Exception ex)
    {
        //throw;
    }

    return View();
}


3 commentaires

Merci pour votre réponse mais Amazon S3 est vraiment surchargée ici. Je recherche une solution locale simple qui permettra de gérer des fichiers et des dossiers dans certains dossiers considérés comme le dossier racine.


D'accord, j'espère que j'ai aidé un futur projet.


C'est pourquoi votre question est hors sujet. Vous n'êtes pas disposé à faire votre travail, mais demandez aux autres de le faire. Lorsque quelqu'un vous donne une solution compétente, vous n'acceptez pas cela. Cela ne consiste pas à résoudre votre problème, il s'agit de grandir notre base de connaissances en tant que communauté.



2
votes

Voici un exemple d'un système de gestion de fichiers simple à l'aide des contrôleurs et actions Standard ASP.NET MVC, Framework d'entité et la Bibliothèque JavaScript impressionnante Dropzone Pour télécharger plusieurs fichiers à l'aide d'Ajax.

Chaque client disposera de la liste de fichiers afin que nous ayons besoin de stocker ces informations dans une table de base de données, voici le modèle: P>

@{
    ViewBag.Title = "Upload Files";
}

<div>
    <button id="selectFile">Click to Browse File</button>
</div>

@using (Html.BeginForm("UploadFiles", "FileUpload", FormMethod.Post, new { id = "uploadForm", @class = "dropzone dropzone-area" }))
{
    @Html.AntiForgeryToken()

    @Html.Hidden("CustomerId", 1)

    <div class="dz-message">Drop File Here To Upload</div>

    <div class="fallback">
        <input name="file" type="file" multiple />
    </div>
}


@section Scripts {
    <script src="@Url.Content("~/Scripts/dropzone.js")"></script>

    <script type="text/javascript">
        Dropzone.options.selectForm = {
            paramName: 'file',
            maxFilesize: 10,
            maxFiles: 10,
            acceptedFiles: '.jpg,.png,.doc,.pdf',
            addRemoveLinks: false
        };

        $('#selectFile').on('click', function () {
            $('#uploadForm').trigger('click');
        });
    </script>
}


0 commentaires