2017-02-08 2 views
0

Я использую MVCFileManagerExtension (DevExpress v14.2), при попытке загрузить файл появилась ошибка «Файл не найден».Ошибка «Файл не найден» при загрузке файла через DevExpress FileManager

Это мой взгляд код:

@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; 
     } 
    } 

} 

Спасибо заранее.

ответ

0

Другие параметры диспетчера файлов выглядит действительным, но декларация путь к корневой папке кажется неправильным:

public const string Folder = @"~\"; 

С FileManagerExtension.DownloadFilesdocumentation, rootFolder параметр содержит значение, определяющее корневую папку, в которой расширение FileManager привязанный, следовательно, вы должны обеспечить относительный путь для корневой папки, например:

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

Заметим, что вместо использования обратной косой черты, как путь к файлам Windows, относительный путь, требуемого DownloadFiles использует знак слэш (/) в качестве разделителя имен папок (т. корневая папка приложения, помеченная как ~/, то же правило применяется для пути Url.Content).

Во время запроса загрузки FileManagerExtension проверяет доступность файла на основе пути к файлу сервера, преобразованного из заданного относительного пути URL-адреса, если путь неверен или недействителен на стороне сервера, он выкинет FileNotFoundException.

+0

Я сожалею, но это не работа, это мой новый код Folder = @ «~/Content/Руководства» –

0

Просмотрите руководство по устранению возможных проблем с элементами управления/расширениями на основе файлов ASPxUploadControl/MVC UploadControl - FAQ. Espessially, убедитесь, что соответствующая маршрутизация исключение регистрируется для обработчиков (Р7):

public static void RegisterRoutes(RouteCollection routes) { 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute("{resource}.ashx/{*pathInfo}"); 
    ... 
} 
Смежные вопросы