2014-11-18 3 views
0

У меня проблема: ASP-MVC Я хочу поместить файл в папку в IIS и разрешить пользователям загружать его на моем сайте.Позволяет пользователю загрузить файл, расположенный в конкретной папке IIS

На моем сайте у меня будет ссылка, указывающая на метод действия в моем контроллере, и в рамках этого метода я хочу поместить необходимый код. Никогда ранее этот вопрос не обсуждался, будет использоваться пример кода. Благодаря!

ответ

0

Этот код, взятый из этого question, выполнит то, что вы хотите.

public FileResult Download() 
{ 
    byte[] fileBytes = System.IO.File.ReadAllBytes("c:\folder\myfile.ext"); 
    string fileName = "myfile.ext"; 
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); 
} 
0

Предполагая, что вы хотите получить конкретный файл, основываясь на некоторых Переданный ID, вы можете использовать функцию Controller.File, как описано здесь: http://msdn.microsoft.com/en-us/library/dd492492(v=vs.100).aspx

Вот пример функции контроллера с этой страницы:

public ActionResult ShowFileFN(string id) { 
    string mp = Server.MapPath("~/Content/" + id); 
    return File(mp, "text/html"); 
} 

Это вернет двоичный поток именованного файла с указанным типом содержимого MIME, в данном случае «text/html». Вам нужно знать тип MIME для каждого возвращаемого файла.

Вот функция, чтобы получить тип MIME файла на основе его расширения:

public static string GetMimeType(string fileName) 
{ 
    string mimeType = "application/unknown"; 
    string ext = System.IO.Path.GetExtension(fileName).ToLower(); 
    Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); 
    if (regKey != null && regKey.GetValue("Content Type") != null) 
     mimeType = regKey.GetValue("Content Type").ToString(); 
    return mimeType; 
} 
Смежные вопросы