2013-07-26 5 views
4

Я работаю с ASP.NET MVC 4, и я пытаюсь получить путь к загруженному файлу, чтобы открыть и обработать его. Это, как я продолжу:Получение пути к файлу из HttpPostedFileBase

контроллер

public ActionResult Bulk(HttpPostedFileBase file) 
{ 
    FileStream fs = System.IO.File.Open(Server.MapPath(file.FileName), 
             FileMode.Open, FileAccess.Read); 

    return RedirectToAction("Index"); 
} 

Посмотреть

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

    @using (Html.BeginForm("Bulk", "Bulk", null, FormMethod.Post, new 
              { enctype = "multipart/form-data" })) 
    { 
     @Html.ValidationSummary(true) 

     <fieldset> 
      <p> 
       <input type="file" name="file"/> 
      </p> 
      <div class="form-actions"> 
       <button type="submit" class="btn btn-primary">Create</button> 
      </div> 
     </fieldset> 
    } 

Когда я делаю это, я получаю сообщение об ошибке, которое говорит ... Could not find a part of the path ...

Как я могу найти путь, где находится мой файл?

ответ

1

не могу комментировать, поскольку я не имеют достаточную репутацию ... :(

Имеет ли папка ...

C: \ Users \ maab \ Desktop \ 2013-05-10_BuSI Материал проекта кого \ BuSIMaterial \ BuSIMaterial \ App_Data \ загрузки

существуют? Если нет, попробуйте создать его вручную и повторите попытку.

+1

Вы были правы, спасибо! – Traffy

2

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

if (file != null && file.ContentLength > 0) 
    { 
     // extract only the fielname 
     var fileName = Path.GetFileName(file.FileName); 
     // store the file inside ~/App_Data/uploads folder 
     var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
     file.SaveAs(path); 
    } 

я взял выше от ответа на подобный вопрос в случайно и Дарин Димитров : File Upload ASP.NET MVC 3.0

Этот ответ дополнительно ссылается на запись в блоге полезный Uploading a File (Or Files) With ASP.NET MVC

+0

Спасибо за ваш ответ! Я попробую сейчас и дам вам знать. – Traffy

+1

Когда программа поступает в метод SaveAs, я получаю эту ошибку: ** Не удалось найти часть пути 'C: \ Users \ maab \ Desktop \ 2013-05-10_BuSI Материал Project - Last \ BuSIMaterial \ BuSIMaterial \ App_Data \ uploads \ List_2013.xlsx '. ** – Traffy

+0

Если эта ошибка возникает при ее локальном запуске - вы создали папку uploads в App_Data? Если это происходит при публикации, вам может потребоваться настроить параметры публикации (щелкните правой кнопкой мыши по проекту-> Свойства с помощью Обозревателя решений) и проверьте, что в разделе «Пакет/Публикация» он развертывает все файлы в этой папке проекта). Кроме того, вам может потребоваться предоставить права на папку для загрузки в IIS. – shawad