我很难相信没有办法让文件的完整路径上传到MVC3中的服务器(我已经读过这是出于安全目的)。
有解决方法吗?我正在编写一个小应用程序,用户将上传文件,在屏幕上进行编辑,然后将其保存回原始位置。有没有人有这样做的好方法?我是否必须使用HttpPostedFileBase
以外的其他内容?
答案 0 :(得分:5)
不可能。 Web服务器只能知道用户的Web浏览器愿意告诉它的文件,并且除了文件内容之外,任何当前浏览器都只提供原始文件名。客户端PC上的文件路径永远不会发送到服务器。作为安全预防措施,似乎无法通过客户端Javascript获取此信息。
此外,Web服务器无法控制用户PC上的 ,(重新)下载的文件将被保存,因此无论如何,拥有此路径信息几乎没用。
答案 1 :(得分: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);
}
希望这会帮助你..
答案 2 :(得分:0)
不可能,客户端无法播放文件。首先,您需要在服务器上传文件,从那里对其执行操作并再次保存在客户端计算机中。
@using (Html.BeginForm("EditImage", "Home", FormMethod.Post, new { enctype = "multipart/form- data" }))
{
}
在控制器中你可以使用这样的动作方法:
[HttpPost]
public ActionResult EditImage(AddNewProductModel model, HttpPostedFileBase file)
{
}
希望此解决方案能为您提供帮助。