【发布时间】:2017-08-22 15:18:10
【问题描述】:
我创建了一个带有搜索参数的队列触发器的 azure webjob。 我想使用这些参数处理搜索并将记录保存到 csv 文件中。
我想要一种将 csv 文件存储在 azure 上的方法,以便我可以将下载链接发送给用户?
【问题讨论】:
标签: c# asp.net-mvc azure azure-webjobs
我创建了一个带有搜索参数的队列触发器的 azure webjob。 我想使用这些参数处理搜索并将记录保存到 csv 文件中。
我想要一种将 csv 文件存储在 azure 上的方法,以便我可以将下载链接发送给用户?
【问题讨论】:
标签: c# asp.net-mvc azure azure-webjobs
您可以使用 Azure Blob 存储来存储 CSV。通过确保容器具有正确的权限,您可以直接获取指向 blob 的链接并发送给用户。此外,您可以使用 SASUrls 来限制 URL 的有效期。
【讨论】:
我想要一种将 csv 文件存储在 azure 上的方法,以便我可以将下载链接发送给用户?
您可以生成 csv 文件并将其写入 Azure blob 存储,这是一个简单的示例,请参考。
public static void ProcessQueueMessage([QueueTrigger("myqueue")] string message, [Blob("mycontainer/{queueTrigger}.csv")] out string output, TextWriter log)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add("1", "fred");
//your logic to query the result
//and generate CSV string
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
}
output = sb.ToString();
log.WriteLine(message);
}
在 Azure blob 中存储 csv 文件后,您可以向用户提供 mycontainer/{blobname}.csv 的 URL。您可以允许匿名访问或为客户端提供共享访问签名 (SAS),以使 blob 可供其他用户使用。
请查看“Controlling access to blob data”部分以了解如何控制对 blob 数据的访问。
【讨论】: