从HttpPostedFileBase获取文件路径

时间:2013-07-26 08:57:11

标签: c# asp.net-mvc file-upload filepath httppostedfilebase

我正在使用ASP.NET MVC 4,我正在尝试获取上传文件的路径以便打开和操作它。这就是我的工作方式:

控制器

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 ...

如何获取文件实际所在的路径?

2 个答案:

答案 0 :(得分:3)

据我了解,您需要在打开文件之前将文件上传到服务器,例如

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

我从Chance和Darin Dimitrov的类似问题的答案中得到了上述内容 :File Upload ASP.NET MVC 3.0

此答案还引用了有用的博文Uploading a File (Or Files) With ASP.NET MVC

答案 1 :(得分:2)

无法评论,因为我没有足够的声誉...... :(

文件夹......

  

C:\ Users \ maab \ Desktop \ 2013-05-10_BuSI Material Project -Last \ BuSIMaterial \ BuSIMaterial \ App_Data \ uploads

存在吗?如果没有,请尝试手动创建并再次尝试上传。