【发布时间】:2020-01-14 00:25:17
【问题描述】:
我尝试使用以下代码将文件上传到 azure blob 容器,但上传的文件已损坏。
public async void UploadFile(Stream memoryStream, string fileName, string containerName)
{
try
{
memoryStream.Position = 0;
CloudBlockBlob file = GetBlockBlobContainer(containerName).GetBlockBlobReference(fileName);
file.Metadata["FileType"] = Path.GetExtension(fileName);
file.Metadata["Name"] = fileName;
await file.UploadFromStreamAsync(memoryStream).ConfigureAwait(false);
}
catch (Exception ex)
{
throw ex;
}
}
我该如何解决。
无法打开使用上述代码上传到 blob 的 excel 文件。
错误:
Stream streamData= ConvertDataSetToByteArray(sourceTable); // sourceTable is the DataTable
streamData.Position = 0;
UploadFile(streamData,'ABCD.xlsx','sampleBlobContainer'); //calling logic to upload stream to blob
private Stream ConvertDataSetToByteArray(DataTable dataTable)
{
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dataTable.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dataTable.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => (field.ToString()));
sb.AppendLine(string.Join(",", fields));
}
var myByteArray = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
var streamData = new MemoryStream(myByteArray);
return streamData;
}
【问题讨论】:
-
您说文件已损坏是什么意思?它不可读还是什么?你能说得更具体点吗?
-
请检查您的内存流转换部分是否有误。
-
got corrupted是什么意思? MemoryStream 来自哪里,它包含什么?你确定它的内容没问题?如果您上传损坏的数据,结果将是一个损坏的文件。 -
用损坏的文件截图更新问题
-
@chandrasekhar 您的意思是您将 .xlsx 文件上传到 azure blob 存储但下载后损坏了吗?
标签: c# azure asp.net-core azure-blob-storage