簡體   English   中英

如何在Microsoft Azure虛擬服務器上創建和保存臨時文件

[英]How to create and save a temporary file on Microsoft Azure virtual server

我正在為網站使用免費的 MS Azure虛擬Web服務器。

在我的開發機上,我可以成功創建一個CSV文件,將其保存到相對的臨時目錄,然后將其下載到瀏覽器客戶端。

但是,當我從Azure站點運行它時,出現以下錯誤:

System.IO.DirectoryNotFoundException:找不到路徑'D:\\ home \\ site \\ 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);
}

確保~/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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM