【问题标题】:"File not found" error when downloading File via DevExpress FileManager通过 DevExpress FileManager 下载文件时出现“找不到文件”错误
【发布时间】:2017-02-12 05:02:55
【问题描述】:

我使用MVCFileManagerExtension(DevExpress v14.2),尝试下载文件时出现“找不到文件”错误。

这是我的视图代码:

@model string

@Html.DevExpress().FileManager(settings =>
{
     settings.Name = "FileManager";

     settings.CallbackRouteValues = new { Controller = "FileManager", Action = "FileManagerPartial" };
     ...
     settings.DownloadRouteValues = new { Controller = "FileManager", Action = "FileManagerPartialDownload" };

     settings.Settings.ThumbnailFolder = Url.Content("~/Content/FileManager/Thumbnails");

     settings.SettingsEditing.AllowDownload = true;
     ....

     settings.SettingsFileList.View = DevExpress.Web.FileListView.Thumbnails;
}).BindToFolder(Model).GetHtml()

控制器:

namespace NextERP.Controllers
{
    public class FileManagerController : Controller
    {
        public FileStreamResult FileManagerPartialDownload()
        {
            return FileManagerExtension.DownloadFiles(HomeControllerFileManagerSettings.CreateFileManagerDownloadSettings(), (string)HomeControllerFileManagerSettings.Model);
        }
    }

    public class HomeControllerFileManagerSettings
    {
       public const string Folder = @"~\";
       public static string Model { get { return Folder; } }

       public static DevExpress.Web.Mvc.FileManagerSettings CreateFileManagerDownloadSettings()
       {
         var settings = new DevExpress.Web.Mvc.FileManagerSettings();
         settings.SettingsEditing.AllowDownload = true;
         settings.Name = "FileManager";
         return settings;
       }
    }

}

提前谢谢你。

【问题讨论】:

    标签: c# asp.net-mvc devexpress


    【解决方案1】:

    其他文件管理器设置看起来有效,但根文件夹路径声明似乎错误:

    public const string Folder = @"~\";
    

    来自FileManagerExtension.DownloadFilesdocumentationrootFolder参数包含指定FileManager扩展绑定的根文件夹的值,因此您需要提供根文件夹的相对路径,例如:

    public const string Folder = @"~/Files";
    

    请注意,DownloadFiles 所需的相对路径使用斜杠 (/) 符号作为文件夹名称分隔符,而不是像 Windows 文件路径那样使用反斜杠(即应用程序根文件夹标记为 ~/,同样的约定适用于 Url.Content路径)。

    在下载请求期间,FileManagerExtension 根据从给定相对 URL 路径转换的服务器文件路径检查文件可用性,如果路径格式错误或在服务器端无效,它将抛出 FileNotFoundException

    【讨论】:

    • 很抱歉,它不起作用,这是我的新代码 Folder = @"~/Content/Manuals"
    【解决方案2】:

    查看ASPxUploadControl / MVC UploadControl - FAQ 指南以解决基于文件的控件/扩展可能存在的问题。特别是,确保为处理程序注册了相应的路由异常(p7):

    public static void RegisterRoutes(RouteCollection routes) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2022-01-17
      • 2018-10-29
      • 1970-01-01
      相关资源
      最近更新 更多