如何在Microsoft Azure虚拟服务器上创建和保存临时文件

本文关键字:创建 保存 临时文件 服务器 虚拟 Microsoft Azure | 更新日期: 2023-09-27 18:18:54

我正在使用免费的 MS Azure虚拟web服务器。

在我的开发机器上,我可以成功地创建一个CSV文件,保存到一个相对临时目录,然后下载到浏览器客户端。

但是,当我从Azure站点运行它时,我得到以下错误:

先。无法找到文件的一部分网站路径"D: ' ' ' wwwroot ' temp ' somefile.csv"。

Azure网站的免费版本是否阻止我们将文件保存到磁盘?如果没有,我们可以在哪里创建/保存动态生成的文件?

代码示例

private FilePathResult SaveVolunteersToCsvFile(List<Volunteer> volunteers)
{
    string virtualPathToDirectory = "~/temp";
    string physicalPathToDirectory = Server.MapPath(virtualPathToDirectory);
    string fileName = "Volunteers.csv";
    string pathToFile = Path.Combine(physicalPathToDirectory, fileName);
    StringBuilder sb = new StringBuilder();
    // Column Headers
    sb.AppendLine("First Name,Last Name,Phone,Email,Approved,Has Background Check");
    // CSV Rows
    foreach (var volunteer in volunteers)
    {
        sb.AppendLine(string.Format("{0},{1},{2},{3},{4},{5},{6}",
            volunteer.FirstName, volunteer.LastName, volunteer.MobilePhone.FormatPhoneNumber(), volunteer.EmailAddress, volunteer.IsApproved, volunteer.HasBackgroundCheckOnFile));
    }
    using (StreamWriter outfile = new StreamWriter(pathToFile))
    {
        outfile.Write(sb.ToString());
    }
    return File(Server.MapPath(virtualPathToDirectory + "/" + fileName), "text/csv", fileName);
}

如何在Microsoft Azure虚拟服务器上创建和保存临时文件

确保将~/temp文件夹发布到服务器,因为您的发布过程可能不包括它。

Azure网站提供了环境变量,您可以使用这些变量来访问临时存储文件夹等内容。例如,有一个"TEMP"变量,你可以访问它来获得一个特定于你的网站的TEMP文件夹的路径。

将方法中的第2行更改为:

        //string physicalPathToDirectory = Server.MapPath(virtualPathToDirectory);
        string physicalPathToDirectory = Environment.GetEnvironmentVariable("TEMP");

然后把最后一行改成:

        //return File(Server.MapPath(virtualPathToDirectory + "/" + fileName), "text/csv", fileName);
        return File(pathToFile, "text/csv", fileName);

我通常使用

var tempFile = System.IO.Path.GetTempFileName();

它获得一个文件名,您可以在其中临时写入文件。