Как загрузить изображение в указанный каталог c в моем хранилище BLOB-объектов Azure из моего основного приложения ASP. NET? - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы загрузить изображение в указанный подкаталог c в моем контейнере хранения BLOB-объектов, и я не уверен, как это сделать. Посмотрев документацию, я вижу, что на GetBlobs() есть перегрузка, которая позволяет вам указать префикс, но я не вижу его для загрузки. Вот мой метод, который обрабатывает это.

Место загрузки будет: uploads / car / 17999 /

CarController.cs

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Car car)
{
    // Define the cancellation token.
    CancellationTokenSource source = new CancellationTokenSource();
    CancellationToken token = source.Token;

    if (ModelState.IsValid)
    {
        _carService.InsertCar(car);

        int id = car.Id;
        string pathPrefix = "car/17999";
        string fileName = "car-image.jpg";
        string strContainerName = "uploads";

        BlobServiceClient blobServiceClient = new BlobServiceClient(accessKey);
        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(strContainerName);

        //An example of how I would GET the blobs from a prefixed location, I don't know how to apply this to the upload part
        //var blobs = containerClient.GetBlobs(0, 0, pathPrefix);

        var blobs = containerClient.UploadBlob(fileName, car.ImageFile.OpenReadStream());
            return RedirectToAction(nameof(Index));
        }            
        return View(car);
    }

1 Ответ

1 голос
/ 06 апреля 2020

Пожалуйста, попробуйте изменить fileName и добавить туда pathPrefix. Что-то вроде:

string blobName = "car/17999/car-image.jpg";
containerClient.UploadBlob(blobName , car.ImageFile.OpenReadStream());

Это должно загрузить изображение в виртуальную папку car/17999.

Другой альтернативой будет использование BlockBlobClient и использование его Upload метод:

var connectionString = "UseDevelopmentStorage=true";
var containerName = "uploads";
var blobName = "car/17999/car-image.jpg";
BlockBlobClient blockBlobClient = new BlockBlobClient(connectionString, containerName, blobName);
blockBlobClient.Upload(car.ImageFile.OpenReadStream());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...