Почему этот файл создается и как я могу предотвратить его появление?
Когда вы вводите BLOB-объект - json, а выходной BLOB-объект - .csv.Я рекомендую, чтобы вы могли использовать string type напрямую.
демонстрационный код :
public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "AzureWebJobsStorage")]string myBlob, string name, [Blob("test2/{name}.csv", FileAccess.Write, Connection = "AzureWebJobsStorage")]out string outputBlob, TraceWriter log)
{
var outputstring = jsonToCSV(myBlob, ","); // add your logic to covert json to CSV
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
outputBlob = outputstring;
}
Если вы хотите использовать Stream типа, мы могли бы скопировать поток в outputBlob.
public static void Run([BlobTrigger("test/{name}", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, [Blob("test2/{name}.csv", FileAccess.Write, Connection = "AzureWebJobsStorage")] Stream outputBlob, TraceWriter log)
{
myBlob.Position = 0;
var str = StreamToString(myBlob);
var outputstring =jsonToCSV(str,",");// add your logic to covert json to CSV
var stream = StringtoStream(outputstring);
stream.Position = 0;
stream.CopyTo(outputBlob);
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
Я получаю файл json с демонстрационным кодом для csv из другого SO потока .Вы могли бы справиться с этим сами.
public static DataTable jsonStringToTable(string jsonContent)
{
DataTable dt = JsonConvert.DeserializeObject<DataTable>(jsonContent);
return dt;
}
public static string jsonToCSV(string jsonContent, string delimiter)
{
StringWriter csvString = new StringWriter();
using (var csv = new CsvWriter(csvString))
{
csv.Configuration.Delimiter = delimiter;
using (var dt = jsonStringToTable(jsonContent))
{
foreach (DataColumn column in dt.Columns)
{
csv.WriteField(column.ColumnName);
}
csv.NextRecord();
foreach (DataRow row in dt.Rows)
{
for (var i = 0; i < dt.Columns.Count; i++)
{
csv.WriteField(row[i]);
}
csv.NextRecord();
}
}
}
return csvString.ToString();
}
public static string StreamToString(Stream stream)
{
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
return text;
}
public static Stream StringtoStream(string str)
{
byte[] byteArray = Encoding.UTF8.GetBytes(str);
MemoryStream stream = new MemoryStream(byteArray);
return stream;
}