質問: SDKのwget()関数や、NuttX Shell上のwgetコマンドを使用しても、AWS s3の署名付きURLからのダウンロードが出来ません。 (PCのブラウザからや、MSYS2のwgetからは、ダウンロード出来ます。) 何かほかに設定が必要なものとかありますでしょうか? * ほか、Googleドライブからのダウンロードも出来ませんでした。 (https://drive.google.com/uc?export=download&id=xxxxx) ※PCのブラウザからや、MSYS2のwgetからは、ダウンロード出来ます。 * 例えばフリー素材などのページからのダウンロードは出来ました。 (https://xxxxx/xxx.mp3) --- 「Spresense SDKチュートリアル」記載の、ファイルを保存する手順で実施しました。 > > app_wget_cb() 関数を一部変更することにより、ファイルに保存することができます。 > > >
回答: お役に立つかわかりませんが、自分の経験上以下の理由が考えられると思います。 1. Host名が長い場合 これはNuttX8.2の制限でHost名の長さが40になっていることが原因でした。 Host名が40文字を超えるとwgetが失敗してしまいます。 `spresense/sdk/apps/include/netutils/webclient.h` に40文字の制約が記載されており、 以下の定義を `# define CONFIG_WEBCLIENT_MAXHOSTNAME 40` 以下のように拡張することで文字数を増やすことができます。 `# define CONFIG_WEBCLIENT_MAXHOSTNAME 60` 2. TLS証明書が無い場合 SpresenseではTLS(https)に必要な証明書を`/mnt/spif/CERTS`に書き込んでおく必要があるようで、このディレクトリの中に必要な証明書が無いとダウンロードに失敗するようです。