[英]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.