Azure WebApp中的文件读取操作“找不到路径的一部分”错误

时间:2018-11-01 19:50:37

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

我有 <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> 带有浏览按钮,我要选择文件的任何位置并使用路径读取文件内容,然后处理内容。

在本地工作正常,但是当作为Web应用程序在azure上发布时,很明显它无法获取文件系统路径,但是如何处理呢?

  

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

Index.cshtml

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

HomeController.cs

LAST_DDL_TIME  Timestamp for the last modification of the object and dependent objects resulting from a DDL statement (including grants and revokes)
TIMESTAMP      Timestamp for the specification of the object (character data)

2 个答案:

答案 0 :(得分:2)

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

更新

HttpPostedFileBase字段添加到模型中。在您的视图中,更改为m => 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();
}

答案 1 :(得分:1)

您正在尝试使用在服务器上执行的代码读取客户端计算机上的 文件。那行不通。您的服务器无权访问客户端计算机中的文件。

看看HttpPostedFileBase上传文件。