Je n'ai pas une situation idéale où les fichiers téléchargés sont stockés sur un partage réseau interne. Donc, dans la base de données, je stocke le chemin vers l'emplacement où le fichier a été enregistré, mais il est tout à fait possible que le fichier soit supprimé de la synchronisation de la base de données. Ainsi, dans une action du contrôleur, je recherche les informations de téléchargement et vérifie que les choses sont correctes. Il peut se résumer comme quelque chose comme ceci:Comment gérer différents ActionResults pour un contrôleur ASP.NET MVC Action
public ActionResult GetUploadedFile(int uploadId){
var uploadedFile = Repository<Upload>.FirstOrDefault(upload => upload.ID == uploadID);
if(uploadedFile == default(Upload)){
return View("InvalidUpload");
}
if(File.Exists(uploadFile.Path)){
var fileInfo = new FileInfo(uploadFile.Path);
var contentType = HttpContext.GetMimeTypeForFileInfo(fileInfo) // my lookup extension method
return File(uploadFile.Path, contentType, uploadFile.Name);
}
return View("InvalidUpload");
}
Le problème est que cette action est actuellement accessible via un lien sur une vue qui est chargé par AJAX. Ainsi, lorsque le fichier existe et que tout est OK, il affiche le dialogue standard "Que voulez-vous faire avec ce fichier" dans le navigateur et conserve le contenu visible à l'utilisateur. Le problème est les autres chemins à travers le code. Renvoyer la vue amène l'utilisateur à une URL complètement nouvelle. Et puis en cliquant en arrière va se réinitialiser où ils étaient (c'est fondamentalement jQuery Tabs, donc rien d'énorme, mais toujours un inconvénient majeur). Donc, je cherche comment d'autres ont pu s'attaquer à cette situation, car il ne semble pas être rare. Ou même quelques commentaires pour rendre cela un peu plus convivial. Je n'ai pas à dire où le fichier est stocké, donc changer ce n'est pas une option.
Voulez-vous prendre l'utilisateur à l'onglet JQuery correcte? –
En fait, je préfère ne pas m'éloigner de l'emplacement actuel, mais les ramener à la bonne position serait également bénéfique. Gardez à l'esprit que l'onglet sur lequel ils sont le plus susceptibles d'être est une URL complète, pas un # à un ID. Donc jQuery Tabs lui donne un hash unique. –