Я реализую API для хранения файлов в хранилище BLOB-объектов Azure.
Я использую библиотеку Microsoft для проверки контейнера и имени BLOB-объекта.
NameValidator.ValidateContainerName(containerName);
NameValidator.ValidateBlobName(blobFullName);
Однако он возвращает некоторые имена как действительные, хотя их собственные документы Я знаю, что это не так, и когда я пытаюсь их сохранить, хранилище больших двоичных объектов возвращает 400 неверных запросов, как и ожидалось.Итак, помимо вопроса о том, почему библиотеки проверки MS неполны, как я могу выполнить остальную часть проверки в C #?В частности, теперь мне не удается выполнить часть
"некоторые символы ASCII или Unicode, такие как управляющие символы (от 0x00 до 0x1F, \ u0081 и т. Д.)"
Iесть файл с \ u0081 в имени файла.Какие оставшиеся недопустимые символы.Они указывают нам на документы IETF, но затем говорят, что «некоторые» из этих символов не разрешены?Какие?Только все управляющие символы?
Просто для ясности, вот часть, которая возвращает 400
CloudBlockBlob blob = documentContainer.GetBlockBlobReference(blobFullName);
await blob.UploadFromStreamAsync(fileStream, token).ConfigureAwait(false);
Спасибо за вашу помощь!
Обновление: я добавил этот битлогики для проверки по крайней мере контрольных символов.Если я смогу получить что-то более надежное, я опубликую пиар-код против проверочного кода Microsoft
if (blobFullName.ToCharArray().Any(c => Char.IsControl(c))) {
throw new HissyFitException(); // or do other stuff to fail validation
}