Можно ли добавить какое-либо свойство или заголовок, чтобы предотвратить перезапись.
Абсолютно. Вы можете указать EtagNonMatch
условие доступа с *
в качестве значения. Из документации link
:
Если ETag для BLOB-объекта не совпадает с указанным ETag. Укажите подстановочный знак (*) для выполнения операции, только если ресурс не существует, и не выполните операцию, если она существует.
Это приведет к сбою загрузки большого двоичного объекта в случае, если блоб с таким же именем существует. Условия доступа можно указать в параметре accessConditions
.
Подробнее о поддержке условных заголовков в хранилище BLOB-объектов можно узнать здесь: https://docs.microsoft.com/en-us/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations.
Я хочу, чтобы дубликаты файлов также сохранялись без перезаписи
Это то, что вам нужно обрабатывать самостоятельно. Если загрузка BLOB-объекта не удалась, поскольку BLOB-объект уже существует, вы получите ошибку Pre Condition Failed (HTTP Status Code 412)
. Исходя из этой ошибки, вам нужно будет придумать новое имя для большого двоичного объекта и загрузить его снова.
ОБНОВЛЕНИЕ
Вот код (не тестировался), что вы можете использовать:
var options = {
blockSize : customBlockSize,
accessConditions: {
EtagNonMatch: '*'
}
};
var speedSummary = blobService.createBlockBlobFromBrowserFile('mycontainer', file.name, file, options, function(error, result, response) {
finishedOrError = true;
if (error) {
// Upload blob failed
} else {
// Upload successfully
}
});