【发布时间】:2019-02-18 01:34:47
【问题描述】:
我想在将IFormFILe 更改为流列表文件后上传一个列表文件可以在一次上传中吗?
【问题讨论】:
标签: asp.net-core azure-blob-storage
我想在将IFormFILe 更改为流列表文件后上传一个列表文件可以在一次上传中吗?
【问题讨论】:
标签: asp.net-core azure-blob-storage
这是我用来在 Azure Blob 中上传文件的内容:
public interface IFileStorageService
{
Task<string> UploadImageAsync(IFormFile imageFile);
Task<string> UploadVideoAsync(IFormFile videoFile);
}
public class FileStorageService : IFileStorageService
{
private readonly Uri _baseUri = new Uri("YourBlobUrl");
private readonly CloudBlobClient _client;
public FileStorageService()
{
_client = new CloudBlobClient(_baseUri, new StorageCredentials("accoutName", "YourSecretKey"));
}
public async Task<string> UploadImageAsync(IFormFile imageFile)
{
try
{
StreamReader streamReader = new StreamReader(imageFile.OpenReadStream());
var container = _client.GetContainerReference("images");
var blob = container.GetBlockBlobReference(imageFile.FileName +".jpg");
await blob.UploadFromStreamAsync(streamReader.BaseStream);
return new Uri(_baseUri, $"/images/{imageFile.FileName}.jpg").ToString();
}
catch (Exception exception)
{
throw;
}
}
public async Task<string> UploadVideoAsync(IFormFile videoFile)
{
try
{
StreamReader videoStream = new StreamReader(videoFile.OpenReadStream());
var container = _client.GetContainerReference("videos");
var blob = container.GetBlockBlobReference(videoFile.FileName+".mp4");
await blob.UploadFromStreamAsync(videoStream.BaseStream);
return new Uri(_baseUri, $"/videos/{videoFile.FileName}.mp4").ToString();
}
catch (Exception exception)
{
throw;
}
}
}
现在您可以使用它来上传IFormFile 的列表,只需遍历IFormFile 的列表。
【讨论】: