2010-03-03 9 views
0

J'ai un fichier que je dois copier, exécuter une commande contre la copie qui le spécialise pour la personne le téléchargeant, puis fournir cette copie à un utilisateur à télécharger. J'utilise ASP.Net MVC2, et je n'ai jamais rien fait de tel. J'ai cherché le moyen le plus simple de le faire, mais je n'ai pas trouvé grand-chose, alors j'ai trouvé un plan.ASP.Net: Générer un fichier à télécharger

Je pense que ce que je vais faire est de générer un guid, qui deviendra le nom d'un dossier que je vais générer au même niveau du fichier source à partir duquel la copie est faite. Je vais ensuite copier le fichier dans ce dossier, exécuter ma commande contre celui-ci, fournir un lien vers le fichier, et je vais avoir un service qui s'exécute de temps en temps qui supprime les répertoires qui datent de plus d'un jour.

Est-ce que je pense ça? Existe-t-il un moyen plus simple, plus simple ou au moins plus formel de le faire? Mon chemin me semble un peu compliqué et désordonné.

Répondre

1

De quel genre de commande disposez-vous pour l'exécuter? Parce qu'il serait idéal de le traiter en mémoire dans l'action d'un contrôleur en utilisant FileResult de MVC pour l'envoyer au client

Charles

+0

Eh bien, je voudrais lancer un programme d'installation de Windows requête SQL sur elle, mais je me bats pour savoir comment faire en .Net. Il semble qu'il y ait une API, mais je n'arrive pas à trouver où la télécharger. J'aimerais faire tout ça dans le code comme ça. –

+1

Hmmm ok, je n'ai aucune expérience dans ce domaine. Vous feriez peut-être mieux de poser une autre question sur la façon de faire quelque chose comme ça en mémoire et ensuite utiliser cette connaissance pour retourner un 'FileResult'. J'ai ajouté quelques balises à la question pour peut-être aider un peu. – Charlino

2

Pouvez-vous traiter en mémoire et le diffuser au client avec un gestionnaire?

Voilà comment je fais des choses comme ça. Fondamentalement, votre lien de téléchargement pointe vers un HttpHandler, généralement asynchrone, qui effectue le traitement, puis transmet les bits avec une disposition de contenu de «pièce jointe» et un nom de fichier.

EDIT: Je ne fais pas beaucoup MVC mais ce que Charles décrit ressemble à et la version MVC ce que je décris ci-dessus. De toute façon, le traitement en mémoire et le streaming est probablement votre meilleur pari. Il évite beaucoup de maux de tête, de code et de flux de travail que vous auriez à gérer autrement.

Questions connexes