【问题标题】:Get File Path using File name from a TextBox in C#使用 C# 中文本框中的文件名获取文件路径
【发布时间】:2017-01-20 13:35:30
【问题描述】:

我正在使用input type = file 并且我正在使用 Chrome,因此我将不允许获取所选文件的文件路径。它只返回文件名

这是我现有的代码:

string path = Path.GetFullPath(appPerfLog.Value);

我期待这个结果,以便我可以在我的应用程序中使用完整的路径:

C:\Users\myUsername\Desktop\someFolder\Proactive_Hiring_VW101582_Combo_200users_09210316.csv

但这是我得到的:

C:\Program Files (x86)\IIS Express\Proactive_Hiring_VW101582_Combo_200users_09210316.csv

如何通过在我的计算机中搜索目录来获得完整路径?我需要将它用于 StreamReader。出于安全考虑,Google Chrome 仅返回 file name,因此我需要有关解决方法/替代方法的帮助。

【问题讨论】:

    标签: c# html .net filepath


    【解决方案1】:

    没有上传文件的完整路径之类的东西,或者至少,没有你应该使用的完整路径。

    当您将文件上传到 Web 服务器时,您使用的 Web 框架会将此文件存储在内存中或磁盘上的临时目录中,然后您的应用程序可以从那里以流的形式访问它,以便读取一次,或者使用一种方法将其保存到您选择的目录中。

    一旦您的应用程序部署在 Web 服务器上,您尝试做的事情就不会运行,因为无法保证该文件甚至会以其过去在客户端上的名称出现。众所周知,客户端上名为D:\Temp\Foo.txt 的文件在服务器上名为C:\Windows\Temp\asdfg123.tmp

    您需要为您正在使用的 Web 应用程序框架使用适当的 API。对于 ASP.NET FileUpload 控件,您将不得不使用FileUpload.SaveAs(string filename) 让 ASP.NET 将文件写入您选择的路径。之后,您可以使用filename 从您的代码中读取文件。

    【讨论】:

    • 换句话说,我只需要放弃input type = file 并改用FileUpload 控件吗?只是为了澄清。 @CodeCaster
    • 不,我告诉您需要使用正确的 API。您可以只使用文件输入,但是如何处理文件取决于您首先如何读取它。如果是通过Request.Files[],则返回一个HttpPostedFile,它也有一个SaveAs() 方法。
    • 澄清一下,我确实不需要需要将文件上传到网络服务器。我需要完整路径来读取 CSV 文件并对结果值执行计算。有解决方案吗?谢谢!
    • 您无法从 Web 服务器访问客户端上的文件,因此您确实需要上传文件。
    • 我会尽量听从你的建议。非常感谢@CodeCaster! :)
    猜你喜欢
    • 2023-03-26
    • 2013-12-08
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2012-10-25
    • 2020-04-10
    相关资源
    最近更新 更多