Несколько загрузок файлов с использованием BeginCollectionItem

У меня есть сайт, который использует BeginCollectionItem для создания новых шагов процесса, и на каждом шаге процесса есть загрузка файла. В идеале я хотел бы, чтобы закачки файлов сохранялись в разных контейнерах, поскольку это облегчит задачу, когда мне потребуется загрузить файлы.

Однако в данный момент он создает контейнер для каждого элемента коллекции, но он помещает все файлы в каждый из них, и я ожидаю, что он поместит каждый файл в соответствующий контейнер.

Для хранения мы используем учетные записи хранения Azure.

Код ниже:

Частичный вид:

@using (Html.BeginCollectionItem("SectionInfo"))
{
    <div class="col-12 value-top pad-top">
        <input class="hidden-value" value="" name="SectionInfo[@ViewData["ContainerNoNum"]].valuematch">
        <h3>Due Date</h3>
        @Html.EditorFor(m => m.DueDate)
    </div>
    <div class="col-12 pad-top">
        <h3>Add files</h3>
        <input type="file" name="files" multiple="multiple">
    </div>
    <div class="col-12 pad-top">
        <h3>External Document Link</h3>
        @Html.TextBoxFor(m => m.ExternalDocument)
    </div>
}

контроллер:

[HttpPost]
public async Task<IActionResult> InstanceProcess(List<IFormFile> files, string InstanceId, [Bind(Prefix = "SectionInfo")]IEnumerable<ProcessOutput> secinf)
{
     if (files.Count() > 0)
     {
         CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
         CloudBlobContainer container = blobClient.GetContainerReference(getid);
         await container.CreateIfNotExistsAsync();
         await container.SetPermissionsAsync(new BlobContainerPermissions
         {
              PublicAccess = BlobContainerPublicAccessType.Blob
         });
         foreach (var item in secinf)
            {
                foreach (var file in files)
                {
                    CloudBlockBlob blockBlob = container.GetBlockBlobReference(item.valuematch +file.FileName);
                    await blockBlob.UploadFromStreamAsync(file.OpenReadStream());
                 } 

              }
     }
     _context.SaveChanges();
}

0 ответов

Другие вопросы по тегам