"找不到文件"通过DevExpress FileManager下载文件时出错

时间:2017-02-08 13:33:10

标签: c# asp.net-mvc devexpress

我使用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;
       }
    }

}

提前谢谢。

2 个答案:

答案 0 :(得分:0)

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

public const string Folder = @"~\";

FileManagerExtension.DownloadFiles documentationrootFolder参数包含指定FileManager扩展所绑定的根文件夹的值,因此您需要提供根文件夹的相对路径,例如:< / p>

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

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

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

答案 1 :(得分:0)

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

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