2013-07-26 200 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:\用户\ MAAB \桌面\ 2013-05-10_BuSI材料项目-Last \ 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 Material Project - Last \ BuSIMaterial \ BuSIMaterial \ App_Data \ uploads \ List_2013.xlsx'。** – Traffy

+0

如果在本地运行时出现此错误 - 是否在App_Data中创建了上传文件夹?如果发布时发生,您可能需要调整发布设置(右键单击项目 - >解决方案资源管理器中的属性),然后检查Package/Publish是否部署了此项目文件夹中的所有文件。在此之上,您可能需要为IIS中的上传文件夹提供权限。 – shawad