2017-07-05 17 views
0

私はダウンロードするフォルダ全体を持つURLを持っていますが、サイズを取得したい、または少なくともそれをダウンロードする前に計算したいと思います。 私はウェブに直接URLをタップすると、私はすべてのファイルがあることがわかり、そのフォルダ内のすべてのファイル可能性があるため、私は、その質問をする: enter image description hereURL内のフォルダ全体のサイズを取得できますか?

私はそれを試してみましたが、それは唯一でありますあなたがフォルダ内でそれを行うと、すべてのファイルを含むフォルダ全体ではなく、ばかばかしいサイズのフォルダだけがバイト単位で取得されます。 StackOverflow get size only for a url file

HEADを取得するには、フォルダを取得、計算、またはすべてのファイルを列挙する方法はありますか?

多くのありがとうございます。

+0

サーバーが[WebDAV](https://en.wikipedia.org/wiki/WebDAV)をサポートしているかどうか知っていますか? – ColGraff

答えて

0

このページは、サーバーからHTMLページとして生成されるため、ブラウザでそのページを見ることができます。ネイティブアプリでこれを使って作業している場合は、考慮できるいくつかのオプションがあります。

  1. デバイス上のHTMLドキュメントを解析します。このアプローチは非常に不安定ですが、すべてのファイル/ディレクトリ名を入手することができます。すべてのファイルパスのリストを作成したら、必要なすべてのHEAD要求を実行できます。
  2. サーバサイドのスクリプトをPHPのようなもので記述します。このスクリプトは、検索したいディレクトリのサイズを提供します。 HEADリクエストをロードしてデバイスのサイズを合計する必要がなく、1回のリクエストでこれを実行できるので、これは最初のアプローチよりもはるかに効果的です。 An example of how you might do this
+0

こんにちは!私は最初のオプションを試しましたが、それは遅すぎる、それはフォルダ全体をダウンロードするよりも、これを行うために同じ時間がかかります... – Claudio

0

「ファイルが見つかりません」というエラーを傍受し、パターン「foldername.zip」に一致するサーバー側スクリプトを追加すると、対応するフォルダを再帰的に圧縮して結果を返します。ヘッド要求に対して、再帰的にサイズを計算し、それを返す(粗い最悪の場合のサイズ推定値)。未知のファイル処理の詳細は、サーバーによって異なります。

このアプローチには少なくとも1つのセキュリティ警告があります。パス上でrealname()を呼び出してサニタイズし、そのパスがWebルートディレクトリ内にあることを確認するために承認された接頭辞のリストと照合してください(/ etcなどではない)。

関連する問題