#node.js #lambda
#node.js #лямбда
Вопрос:
У меня есть функция для загрузки файла в S3, и я хочу разрешить загрузку изображений только в формате PNG и (JPG, JPEG). Я добавил следующую проверку;
if(fileExtension.toUpperCase() != 'png'.toUpperCase() || fileExtension.toUpperCase() !=
'jpeg'.toUpperCase() || fileExtension.toUpperCase() != 'jpg'.toUpperCase()) {
return {
statusCode: 500,
body: JSON.stringify("Not a valid capture format. Capture upload only accepts PNG and
(JPG,JPEG)"),
};
}
else {
// Upload capture
}
Что происходит, так это то, что он возвращает сообщение об ошибке ниже, в котором говорится, что это недопустимый формат записи, даже когда я ожидаю, что это так. Например, filePrefix
является jpg
, поэтому я ожидаю, что это войдет в else
инструкцию.
Редактировать
Как я могу разрешить загрузку на S3 только файлов с расширениями PNG, JPG или JPEG? Если это что-то другое, чем эти расширения, я хочу вернуть ошибку, как показано выше.
Спасибо всем.
Комментарии:
1. Если
filePrefix
есть"blah"
, то это НЕ какой-либо из случаев, и, следовательно, утверждение верно. Если это так,"png"
то это НЕ"jpeg"
так что условие по-прежнему выполняется. Если это так, то это НЕ"jpeg"
— снова true."png"
Это условие никогда не может быть ложным.2. jpg — это != png … итак, почему он должен выполнять оператор else
3. Я пропустил свой кофе этим утром… Спасибо, ребята! Имеет смысл.
4.
filePrefix
также немного сбивает с толку, поскольку префикс обычно появляется перед чем-либо еще, возможно, вам следует переименовать эту переменнуюfileExtension
5. Измените
||
s наamp;amp;
s ==> Если это не «png», и это не «jpg», и это не «jpeg», тогда верните ошибку
Ответ №1:
Кажется, что ваша логика немного не в порядке!
В нынешнем виде вы проверяете, является ли расширение файла не «png» или не «jpg» или не «jpeg». Поскольку это никогда не может быть все 3, и тест должен возвращать true каждый раз.
Вы должны сделать одну из двух вещей.
- Измените
||
s наamp;amp;
s так, чтобы: Если это не «png», и это не «jpg», и это не «jpeg», тогда верните ошибку
if(fileExtension.toUpperCase() != 'png'.toUpperCase() amp;amp; fileExtension.toUpperCase() !=
'jpeg'.toUpperCase() amp;amp; fileExtension.toUpperCase() != 'jpg'.toUpperCase()) {
// return error
} else {
// process upload
}
или,
- Инвертируйте логику и измените
!=
на==
if(fileExtension.toUpperCase() == 'png'.toUpperCase() || fileExtension.toUpperCase() == 'jpeg'.toUpperCase() || fileExtension.toUpperCase() == 'jpg'.toUpperCase()) {
// process upload
} else {
// return error
}