POST метод для загрузки файла в Azure хранилище - что вернуть - PullRequest
0 голосов
/ 30 марта 2020

Я создаю приложение, в котором

  1. пользователь может загрузить текстовый файл, а затем
  2. найти наиболее используемое слово и изменить это слово в тексте, а
  3. показать измененный текст для пользователя.

если это возможно, я бы хотел

  1. получить текстовое содержимое файла перед загрузкой при вызове метода Post и сохранить его content

, поэтому я добавляю метод «DownloadTextAsyn c ()» в метод POST, но кажется, что я вызываю этот метод не для того субъекта?

 [HttpPost("UploadText")]
        public async Task<IActionResult> Post(List<IFormFile> files)
        {

                    string connectionString = Environment.GetEnvironmentVariable("mykeystringhere");

                    // Create a BlobServiceClient object which will be used to create a container client
                    BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

                    //Create a unique name for the container
                    string containerName = "textdata" + Guid.NewGuid().ToString();

                    // Create the container and return a container client object
                    BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync(containerName);

                    // Create a local file in the ./data/ directory for uploading and downloading
                    string localPath = "./data/";
                    string fileName = "textfiledata" + Guid.NewGuid().ToString() + ".txt";
                    string localFilePath = Path.Combine(localPath, fileName);

                    // Get a reference to a blob
                    BlobClient blobClient = containerClient.GetBlobClient(fileName);

                    // Open the file and upload its data
                    using FileStream uploadFileStream = System.IO.File.OpenRead(localFilePath);
                    await blobClient.UploadAsync(uploadFileStream, true);
                    uploadFileStream.Close();

                    string downloadFilePath = localFilePath.Replace(".txt", "DOWNLOAD.txt");


                    // Get the blob file as text
                    string contents = blobClient.DownloadTextAsync().Result;

                    //return the string 
                    return contents;     


            //if (uploadSuccess)
            //    return View("UploadSuccess");
            //else
            //    return View("UploadError");
        }

У меня проблемы:

  1. Я понял, что blobClient - это ссылка на большой двоичный объект, где я могу получить данные файла, но это необходимо быть неправым?

  2. Также кажется, что я не могу использовать ни CloudBlobContainer, ни CloudBlockBlob blob. Это потому, что внутри метода POST большой двоичный объект был только что инициализирован и не существует, когда выполняются эти двойки?

  3. Также, когда я проверяю метод POST, консоль выдает «Отказано» загрузить шрифт '', поскольку он нарушает следующую директиву политики безопасности содержимого: "default-sr c 'none'". Обратите внимание, что «font-sr c» не был задан явно, поэтому «default-sr c» используется в качестве запасного варианта ». который я погуглил, но понятия не имею, что это значит? Я пробовал разные способы, но продолжаю получать НЕВОЗМОЖНО ПОЧТУ / «Но я не смог найти ответы solid. Может ли это быть связано с моим методом POST?

1 Ответ

1 голос
/ 30 марта 2020

Я понял, что blobClient - это ссылка на большой двоичный объект, где я могу получить данные файла, но это должно быть неправильно?

Это правильно в том смысле, что вы можете использовать blobClient для выполнения операций с BLOB-объектами, таких как выгрузка / загрузка и т. Д. c. Я не уверен, почему вы говорите but this must be wrong.

Также кажется, что я не могу использовать ни CloudBlobContainer, ни CloudBlockBlob blob. Это потому, что внутри метода POST большой двоичный объект был только что инициализирован и не существует, когда выполняются эти двойки?

Нет, это происходит потому, что вы используете более новую версию SDK (version 12.x.x) и CloudBlobContainer и CloudBlockBlob доступны в более старой версии SDK.

Также при тестировании метода POST консоль выдает «Отказ от загрузки font '', поскольку он нарушает следующую директиву политики безопасности содержимого: "default-sr c 'none'". Обратите внимание, что «font-sr c» не был задан явно, поэтому «default-sr c» используется как запасной вариант ». который я погуглил, но понятия не имею, что это значит? Я пробовал разные способы, но продолжаю получать НЕ МОЖЕТ ПОСТИТЬ / «Но я не смог найти ответы solid. Может ли это быть связано с моим методом POST?

Не уверен, почему это происходит. Вы можете задать отдельный вопрос для этого, и когда вы это сделаете, пожалуйста, включите также часть вашего кода HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...