我找不到任何地方如何在asp.net mvc中获取所选文件的路径(我正在使用c#)? 我需要将文件发送到服务器,所以我只需要获取它的路径然后我使用
Image image = Image.FromFile(path);
但找到路径的唯一方法是:
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
但我不想保存我的文件。如果我使用
Path.GetFullPath
我在II Express文件夹中获取路径,但我无法使用此路径。 那么,有没有办法获得选定文件的路径?
如何选择文件:
<form id="Form1" method="post" enctype="multipart/form-data" runat="server">
<input type=file id=File1 name=file value="Browse" runat="server" dir="rtl" aria-selected="false" />
<br>
<input type="submit" id="Submit1" value="Upload" runat="server" aria-haspopup="False" dir="rtl" />
答案 0 :(得分:0)
您似乎正在尝试在客户端上获取文件的路径,并将其“读取”到图像对象 - 这是不可能的,因为服务器无法访问客户端的文件系统。
通常,文件上传将如下所示:
<form id="form1" runat="server" method="post" enctype="multipart/form-data">
<div>
<input id="File1" type="file" runat="server" />
<input type="submit" value="submit" runat="server" onserverclick="Btn1_ServerClick" />
</div>
</form>
,服务器端是:
protected void Btn1_ServerClick(object sender, EventArgs e)
{
var file = File1.PostedFile;
var image = System.Drawing.Image.FromStream(file.InputStream);
}
这是在经典的ASP.NET中,但是如果你使用的是MVC.NET并且访问控制器动作它非常相似(控制器将从表单中接收某种HttpPostedFileBase
作为参数)
答案 1 :(得分:0)
服务器和框架的正确行为是您在服务器上获得位置路径 通常,当我们指的是从客户端到服务器的单向通信时,就像http请求(例如,获取或发布)一样,服务器无法访问客户端的文件系统(硬盘等)。通常,通过选择客户端文件系统上的文件将数据上传到服务器(文件)是发送数据(文件的副本),而不是文件的路径。服务器不会通过使用客户端的路径来启动获取文件的客户端。