【问题标题】:Getting file path for uploaded file in MVC 3在 MVC 3 中获取上传文件的文件路径
【发布时间】:2013-04-24 11:33:41
【问题描述】:

我很难相信没有办法在 MVC3 中获取上传到服务器的文件的完整路径(我已经读过这是出于安全目的)。

有解决办法吗?我正在编写一个小应用程序,用户将在其中上传文件,在屏幕上对其进行编辑,然后将其保存回原始位置。有没有人有这样做的好方法?我必须使用HttpPostedFileBase以外的东西吗?

【问题讨论】:

  • 在用户 PC 上的原始位置?是的......你不会走得太远。此外,将其下载回原始位置会很棘手,因为大多数浏览器不再询问将文件保存在哪里。除非您的意思是文件最终保存在服务器上的“完整路径”

标签: asp.net asp.net-mvc asp.net-mvc-3 file-upload


【解决方案1】:

不可能。 Web 服务器只能知道用户的 Web 浏览器愿意告诉它多少关于文件的信息,并且任何当前的浏览器除了文件内容之外只会给出原始文件名。客户端 PC 上的文件路径永远不会发送到服务器。作为安全预防措施,使用客户端 Javascript 似乎也无法获取此信息。

此外,Web 服务器无法控制用户 PC 上何处保存(重新)下载的文件,因此无论如何拥有此路径信息几乎没有用处。 p>

【讨论】:

    【解决方案2】:

    要获取文件名和路径,您可以这样做::

      foreach (string filesData in Request.Files)
      {
           var fileNm = Request.Files[filesData].FileName;
           HttpPostedFileBase hpf = Request.Files[filesData] as HttpPostedFileBase;
           string filePath = Path.Combine(HttpContext.Server.MapPath("~//Your Folder Path//"));
           hpf.SaveAs(filePath + fileNm);
     }
    

    希望对你有所帮助..

    【讨论】:

      【解决方案3】:

      不可能,无法在客户端播放文件。首先,您需要将文件上传到服务器,从那里对其执行操作,然后再次保存在客户端计算机中。

          @using (Html.BeginForm("EditImage", "Home", FormMethod.Post, new { enctype = "multipart/form-   data" }))
          {
      
          }
      

      在控制器中,您可以使用类似这样的操作方法:

          [HttpPost]
          public ActionResult EditImage(AddNewProductModel model, HttpPostedFileBase file)
          {
      
          }
      

      希望此解决方案对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 2016-01-14
        • 2015-12-04
        • 2012-09-08
        相关资源
        最近更新 更多