我有一个不太理想的情况,上传的文件存储在内部网络共享中。因此,在数据库中,我存储了保存文件的路径,但是文件很可能会在数据库不同步的情况下被删除。因此,在控制器操作中,我查找上传信息并检查事情是否正确。可以总结为这样的事情:
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");
}
问题是当前可以通过 AJAX 加载的视图上的链接访问此操作。因此,当文件确实存在并且一切正常时,它会在浏览器中弹出标准的“你想用这个文件做什么”对话框,并保持内容对用户可见。问题是通过代码的其他路径。返回视图会将用户带到一个全新的 URL。然后单击返回将重置它们的位置(它基本上是动态的 jQuery 选项卡,所以没什么大不了的,但仍然是一个主要的不便)。
所以我正在寻找其他人可能如何解决这种情况,因为这似乎并不罕见。或者甚至是一些反馈,以使其更加用户友好。我对文件的存储位置没有发言权,因此更改它不是一种选择。