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 ステートメントに入ることが期待されます。
編集
拡張子が PNG、JPG、または JPEG のファイルのみを S3 にアップロードできるようにするにはどうすればよいですか?これらの拡張子以外の場合は、上記のようにエラーを返したいと考えています。
皆さん、ありがとう。
1
filePrefix が「なんとなく」の場合その場合、どのケースにも当てはまらないため、このステートメントは true になります。 「png」の場合は、その場合、それは「jpeg」ではありません。したがって、条件は依然として true です。 「jpeg」の場合、「png」ではありません。 -やはり本当です。この条件が false になることはあり得ません。
– VLAZ
2020 年 9 月 3 日 9:12
jpg は != png ... では、なぜ else ステートムを実行する必要があるのでしょうかエント
– グリフロ
2020 年 9 月 3 日 9:12
2
今朝はコーヒーを飲みそびれました...ありがとう!完全に理にかなっています。
– アレクサンダー・ゾリック
2020 年 9 月 3 日 9:14
filePrefix も、通常、プレフィックスが他のものより前に来るため、少し混乱します。おそらく、その変数の名前を fileExtension に変更する必要があります。
– フージ
2020 年 9 月 3 日 9:18
1
|| を &&s ==> に変更します。 「png」でない場合は、 「jpg」ではありません。そしてそれは「jpeg」ではありません。その後、エラーを返します
– フージ
2020 年 9 月 3 日 9:23
----------------------------------
あなたの論理は少し間違っているようです。
現状では、ファイル拡張子が「png」でないかどうかをチェックしています。 「jpg」ではないのかまたは「jpeg」ではありません。 3 つすべてになることはあり得ず、テストは毎回 true を返す必要があるためです。
2 つのうちの 1 つを行う必要があります。
|| を &&s に変更して、次のようにします。それは「jpg」ではありません。そしてそれは「jpeg」ではありません。その後エラーを返します
if(fileExtension.toUpperCase() != 'png'.toUpperCase() && fileExtension.toUpperCase() !=
'jpeg'.toUpperCase() && 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
}