80488


SDKのwget()関数や、NuttX Shell上のwgetコマンドを使用しても、AWS s3の署名付きURLからのダウンロードが出来ません。  
（PCのブラウザからや、MSYS2のwgetからは、ダウンロード出来ます。）  
何かほかに設定が必要なものとかありますでしょうか？

  * ほか、Googleドライブからのダウンロードも出来ませんでした。  
（https://drive.google.com/uc?export=download&id=ｘｘｘｘｘ）  
※PCのブラウザからや、MSYS2のwgetからは、ダウンロード出来ます。

  * 例えばフリー素材などのページからのダウンロードは出来ました。  
（https://ｘｘｘｘｘ/ｘｘｘ.mp3）

* * *

「Spresense SDKチュートリアル」記載の、ファイルを保存する手順で実施しました。

> app_wget_cb() 関数を一部変更することにより、ファイルに保存することができます。


CC BY-SA 4.0
2021-07-21T04:27:41.850
78334
2021-07-30T11:27:21.503
2021-07-28T07:58:36.617
47303
47303
question
spresense
SDKのwget()関数でファイルのダウンロードが出来ない


お役に立つかわかりませんが、自分の経験上以下の理由が考えられると思います。

  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`に書き込んでおく必要があるようで、このディレクトリの中に必要な証明書が無いとダウンロードに失敗するようです。


CC BY-SA 4.0
2021-07-30T11:27:21.503
80488
2021-07-30T11:27:21.503
32034
78334
answer