如何将csv文件存储到webjob中

时间:2017-03-29 08:34:48

标签: c# asp.net-mvc azure azure-webjobs

我创建了一个带有搜索参数的队列触发器的azure webjob。 我想使用这些参数处理搜索并将记录保存到csv文件中。

我想要一种方法在Azure上存储csv文件,以便我可以将该下载链接发送给用户?

2 个答案:

答案 0 :(得分:0)

您可以使用Azure Blob存储来存储CSV。通过确保容器具有正确的权限,您可以直接获取blob的链接并发送给用户。此外,您可以使用SASUrls来限制URL有效期的持续时间。

答案 1 :(得分:0)

  

我想要一种方法在Azure上存储csv文件,以便我可以将该下载链接发送给用户?

您可以生成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。

请检查&#34; Controlling access to blob data&#34;部分知道如何控制对blob数据的访问。