0

我在任何地方都找不到如何在 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" />

4

2 回答 2

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表单接收某种形式的参数)

于 2013-06-08T21:56:17.653 回答
0

您接收到服务器上位置的路径是服务器和框架的正确行为。
通常,当我们指的是从客户端到服务器的单向通信时,因为它发生在 http 请求(例如 get 或 post)时,服务器无法访问客户端的文件系统(硬盘等)。通常通过在客户端文件系统上选择文件将数据上传到服务器(文件)是发送数据(文件的副本),而不是文件的路径。服务器不会通过使用客户端的路径来启动获取文件表单客户端。

于 2013-06-08T21:56:36.330 回答