2013-04-30 85 views
1

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

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

+3

如在用户PC上的原始位置?是啊......你不会那么做。而且,将其下载回原始位置将会非常棘手,因为大多数浏览器不会再询问保存文件的位置。 除非您的意思是文件最终保存到服务器上的“完整路径” – KingCronus 2013-04-30 14:11:45

回答

5

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

此外,网络服务器将无法控制,其中在用户的PC上将(保存)(重新)下载的文件,因此具有该路径信息无论如何都没有什么用处。

0

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

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

希望这将帮助你..

0

不可能的,没有办法与客户端文件进行播放。首先,您需要在服务器上上传文件,并从那里对其执行操作,然后再保存在客户端计算机上。

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

    } 

和控制器,你可以有你的操作方法是这样的:

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

    } 

希望这个解决方案将帮助你。

相关问题