В настоящее время я пытаюсь проверить, существует ли файл, используя aws-sdk для Amazon s3 (точнее, функцию headObject).
Как я мог читать буквально везде, эта функция должначтобы использовать его при попытке проверить, существует ли файл (чтобы затем получить его URL через getSignedUrl), однако я не могу заставить его работать.
Кажется, что независимо от того, что я делаю,Функция s3.headObject сообщает мне, что объект существует.Я попытался проверить существующие, несуществующие элементы и даже несуществующие корзины: все они дали мне точно такой же результат.Я пробовал разные способы вызова функции (асинхронный или нет, используя ее обратный вызов или нет), но без разницы.
Вот как я понимаю свой вызов функции:
var params = {
Bucket: 'BUCKET NAME',
Key: ""
}
// Some more code to determine file name, confirmed working
params.Key = 'FILE NAME'
try {
s3.headObject(params)
// Using here the file that is supposed to exist
} catch (headErr) {
console.log("An error happened !")
console.log(headErr)
}
Я также попытался использовать обратный вызов: однако, кажется, что указанный обратный вызов никогда не вводился.Вот как выглядел мой код:
var params = {
Bucket: 'BUCKET NAME',
Key: ""
}
// Some more code to determine file name, confirmed working
params.Key = 'FILE NAME'
s3.headObject(params, function(err: any, data: any) {
console.log("We are in the callback")
if (err) console.log(err, err.code)
else {
// Do things with file
}
})
console.log("We are not in the callback")
С этим кодом «Мы в обратном вызове» никогда не появлялись, в то время как «Мы не в обратном вызове» отображались правильно.
Независимо от того, что я делаю, ошибки никогда не обнаруживаются.Из того, что я понимаю, из того, как должна работать функция, если файл не существует, предполагается, что он выдаст ошибку (затем перехватит мою перехватку), что позволит мне не создавать ложные URL с помощью функции getSignedUrl.
Что я здесь не так делаю?
Спасибо всем за ответы.Если у вас возникнут дополнительные вопросы, я буду рад ответить как можно лучше.