8
votes

Comment "stocker temporairement" stocker des images sur Web serveur par session dans ASP.NET et C #

Je regarde tout un peu de temps et j'ai envie d'avoir une situation particulièrement unique.

Je génère une image à partir d'un programme tiers (que j'ai intégré à mon application C #) qui est enregistré dans le système de fichiers sur mon serveur Web. Savez-vous de façons efficaces de disposer de ces images après la fin d'une session particulière?

Pour plus de clarté: Au départ, je pensais à un dossier (pour mes images stockées par la session ID) que son contenu a été automatiquement supprimé toutes les 24 heures environ. Je n'aime pas cette idée parce que ce n'est pas vraiment évolutif.

J'ai également consulté la génération d'image dynamique ASP.NET à partir de ce site Web. http://www.sitepoint.com/article/menerating-asp -Net-Images-Fly /

Cependant, cela semble un peu surkill car mon image doit être enregistrée dans le système de fichiers d'une manière ou d'une autre. Si je registre l'image en tant que nom statique, génère un bitmap à partir de celle-ci à l'aide de la méthode susmentionnée, je suis inquiet que l'utilisation simultanée puisse briser l'application.

Cela me laisse avec enregistrer les noms de fichiers avec l'ID de session dans le nom, mais je ne trouve aucune façon efficace de nettoyer les images après la fin de la session.

Merci!

-Dave

Mise à jour: j'aime à peu près toutes les solutions présentées jusqu'à présent (je ne pense pas que la base de données on fonctionnera à cause de la façon dont j'exporte des images) J'apprécie toute votre aide ... je vais commencer à travailler sur la mise en œuvre Celles-ci et rapporteront le dos qui semble fonctionner mieux!

Update2: J'ai fini par générer des noms d'images de manière aléatoire, en les stockant, puis en les supprimant à la fin de la session, merci pour toute votre aide. Toutes les méthodes présentées étaient d'excellentes suggestions. Pour cette situation particulière, bien que cette méthode fonctionne le meilleur.


0 commentaires

5 Réponses :


1
votes

Pourquoi avez-vous besoin de l'enregistrer dans le système de fichiers? Pouvez-vous simplement stocker l'image en session? Si vous avez une ferme Web et que vous n'avez pas de cache de session distribuée ou à une personne persistante (serveur d'état, basée sur SQL ou autre chose), je peux comprendre que cela ne fonctionnera pas.

Le moyen le plus simple de nettoyer un fichier tempe est de ne pas avoir à créer le fichier en premier lieu.

Sur une note latérale, je suis actuellement confronté à un problème simillaire où l'utilisateur sera en mesure de télécharger des documents pendant une session et je devrai les enregistrer pendant un processus d'assistant, mais une fois que l'assistant est terminé les supprimer. On dirait qu'une solution pour les articles temporaires me suites aussi

Modifier

Pourquoi ne pas exporter le fichier, puis la lire en mémoire et stocker en session (je suppose que ce sont de petites images que vous souhaitez surveiller si l'utilisateur peut générer beaucoup de grandes images)


3 commentaires

Malheureusement, le programme que j'ai intégré à C # ne me permettra que d'exporter des images comme JPEG / PNG / BMP.


Donc, ce programme n'exportera-t-il que dans un fichier? Vous pouvez toujours mettre un JPEG en mémoire, c'est juste un tableau d'octets.


Désolé, je suis un peu nouveau à ceci = p ... vous me perdez à peu près. Le programme à ma connaissance n'exporte que des images (le programme est r au fait)



6
votes

Que diriez-vous d'ajouter un fichier global.aSax sur votre site Web et dans l'événement Session_end, vous supprimez le fichier.

    protected void Session_End(Object sender, EventArgs e)
{
    // Remove file
}


1 commentaires

Je ne connais pas cette méthode mais je vais le donner un essai en conjonction avec le poste de néodyme. Merci.



1
votes

Exporter vers un fichier avec un nom unique, lisez-le dans la session et supprimez le fichier. Les données de session peuvent être diffusées sur une page qui génère l'image qui génère l'image sur la volée des données d'image stockées.

Ceci serait potentiellement bon si le client est lu à plusieurs reprises par le client, il n'y a pas non plus de nettoyage, car le nettoyage se produit immédiatement après la lecture du fichier.


0 commentaires

2
votes

Il y a une possibilité que l'utilisateur final puisse revenir et dire que la photo que vous avez livrée n'est pas ce qu'ils ont demandé? Ensuite, je vais réfléchir à deux fois sur la suppression après utilisation. Et plutôt utiliser une stratégie d'archivage. Sinon

(i) utilise les variables de session et nettoyer sur la session_end (ii) Nettoyer le système de fichiers après x heures (iii) stocker les informations sur l'image dans une table de base de données. Gardez une trace du dernier temps ACCCESS et une fois qu'il est plus âgé que «X» nombre d'heures, supprimez-les. (iv) Si vous utilisez SQL Server 2008, stockez l'image elle-même comme fichier ou binaire et les supprimer avec une DTS. (v) et ainsi de suite ...


1 commentaires

On dirait que ceci est une combinaison de ce que tout le monde a dit jusqu'à présent et ce que j'avais à l'esprit, merci beaucoup! Je vais essayer de mettre en œuvre les variables de session, mais je suis toujours amateur et je ne comprends pas tout à fait comment cela fonctionne. Je vais nettoyer le système de fichiers après certaines heures pour le moment et rapporterai pour voir si je peux comprendre comment utiliser les variables de session plus efficacement.



2
votes

Suivez les noms de fichiers temporaires dans une liste et supprimez-les dans l'événement Session_end ou dans l'événement de chargement ou d'introduction de chaque page de page Vérification de la page Délai de session et supprimez les fichiers.

Quelque chose comme: xxx


1 commentaires

J'aime cette idée aussi, merci à tout le monde ... J'ai tellement d'options à essayer =)