【问题标题】:“Could not find a part of the path” Error For File Read Operation in Azure WebAppAzure WebApp 中文件读取操作的“找不到路径的一部分”错误
【发布时间】:2018-11-01 19:50:37
【问题描述】:

我有MVC application,它有浏览按钮我正在选择文件的任何位置并使用路径读取文件内容,然后处理内容。

在本地运行良好,但在 azure 作为网络应用发布时,显然无法获取文件系统路径,但如何处理?

找不到文件“D:\Windows\system32\mydata.json”。

Index.cshtml

 <label>File Path</label>
    <table>
      <tr>
        <td>@Html.TextBoxFor(m => m.filePath, new { type = "file", @class = "input-file" }) )</td>
        <td>&nbsp;&nbsp;</td>

      </tr>
    </table>

HomeController.cs

private static void Test(string filepath)
        {
            string data = System.IO.File.ReadAllText(filepath);
            JArray array = JArray.Parse(data);

【问题讨论】:

    标签: c# .net asp.net-mvc azure azure-web-app-service


    【解决方案1】:

    在 Azure 上,进程当前工作目录为 D:\Windows\system32\,尝试使用 var wholePath = Path.Combine(Server.MapPath("~/"), filepath); 定位 web 根目录下的文件。

    更新

    HttpPostedFileBase 字段添加到您的模型。在您的视图中,更改为m =&gt; m.File

    public class FileModel 
    
    {
        public HttpPostedFileBase File { get; set; }
    }
    

    在控制器中

    public ActionResult FileUpload(FileModel fileModel)
    {
        if (ModelState.IsValid)
        {
             StreamReader s = new StreamReader(fileModel.File.InputStream);
             JArray array = JArray.Parse(s.ReadToEnd());
             ...
         }
         return View();
    }
    

    【讨论】:

    • 但是我正在从任何位置文件夹从 UI 上传文件,它可以工作吗?
    • @Neo 你有一些代码可以在你的网络服务器上保存文件吗?此方法是读取已上传到您网站的文件。
    • 不,我没有任何代码,因为我想我只会直接读取文件内容并进一步处理该内容.. 是否有必要保存文件?
    • @Neo 不,您可以从上传文件中读取文件流,无需将其保存在服务器上。如果需要,我可以稍后发布示例。
    • 你能拜托吗,因为当我发布相同的代码并尝试使用任何给定路径读取文件时,我得到了错误:( 'D:\Windows\system32\mydata.json' 实际文件路径我选择的是C:\myfiles\mydata.json
    【解决方案2】:

    您正试图以在服务器上执行的代码读取客户端计算机上的文件。那是行不通的。您的服务器无权访问客户端计算机中的文件。这是一件好事?

    查看HttpPostedFileBase 以上传文件。

    【讨论】:

      猜你喜欢
      • 2018-01-23
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 2019-09-11
      • 2016-02-05
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多