日本語

ビデオと字幕 · ダイレクト メディア ダウンローダー

ダウンロードされたファイル名の由来: URL パスと Content-Disposition

· 仕組み

http ダウンロード メディア

1 つのサニタイズされたダウンロード名に収束する応答ヘッダーと URL パス
オリジナル ToolAcre ベクトル イラスト

保存されたファイルの名前をブラウザーがどのように決定するかについて説明します。URL の最後のセグメント、サーバーの Content-Disposition ヘッダー、およびツールが設定できるダウンロード属性です。クリーンな URL であっても不適切なファイル名が生成される場合がある理由を示します。

ファイルは「file.php」として保存され、開きません — 直接リンクが隠れている可能性がある命名の問題

`file.php?id=42` で終わる URL は、ブラウザに役に立たないパス名を残したままビデオ バイトを配信する可能性があります。逆に、`.mp4` で終わるアドレスは HTML を返すことができます。ファイル名はリクエストとレスポンスのメタデータから選択されたラベルであり、内部のペイロードに関する証拠ではありません。

Direct Media Downloader は、成功した GET 応答が到着した後にのみ、推奨される名前を計算します。最初に Content-Disposition をチェックし、次に空ではない最後のパス セグメントをチェックし、次に小さな MIME ベースのフォールバックをチェックします。この順序は、ブラウザが普遍的なネゴシエーションを実行すると主張するよりも範囲が狭く、予測可能です。この分離により、一時的な認証情報がディスク名に漏洩することが防止され、クエリ文字列全体によって不正なファイル名文字が含まれることが回避されます。

最後のパス セグメント: デフォルトの推測 - ブラウザが URL からファイル名を読み取る方法と、クエリ文字列がファイル名を混乱させる場所

パス候補は、パーセント エンコーディングからデコードされた、スラッシュ分離後の最後のセグメントです。 URL API はクエリ パラメータを個別に保存するため、クエリ パラメータは含まれません。したがって、`/episodes/launch.mp3?token=...` は `launch.mp3` を生成しますが、末尾のスラッシュには最後のセグメントがなく、別のソースが必要です。

このパス規則は、拡張機能が正直であるかどうかを決定しません。署名された配信ルートではパラメータ内の人間の役職を隠すことができ、この実装では名前の任意のクエリ キーをマイニングしません。この制限により、署名コンポーネント、キャンペーン値、またはレコード識別子をファイル名と取り違えることがなくなります。両方の形式が存在する場合、国際化された形式は非 ASCII 名をより明確に保存でき、フォールバックはより単純なサーバー実装を処理します。

Content-Disposition: サーバーの提案 — ヘッダーが URL 名をオーバーライドする方法と、一部の CDN がそれを設定し、他の CDN が設定しない理由

Content-Disposition は、プレーンな `filename=` 提案、またはエンコードされた UTF-8 `filename*=` フォームを運ぶことができます。 ToolAcre は、エンコードされたスター形式を優先し、パーセントデコードを試みます。デコードが失敗した場合は、完了した転送がクラッシュするのではなく、プレーン フォームに移行し、次にパス ロジックに移行します。

ヘッダーは単にサービス提供ホストの提案です。アプリケーション コードはメディア メタデータを検査して検証しないため、誤解を招くサーバーによって誤解を招く名前が提供される可能性があります。特にソース ホストに慣れていない場合は、ファイルを開く前に、異常な文字と拡張子を確認してください。オブジェクト URL は一時的なブラウザ参照であり、リモート アドレスではありません。オブジェクト URL を使用しても、メディア本文に対する別のアップロードや HTTP リクエストは作成されません。

ダウンロード属性: ツール自体が設定できる内容 - ブラウザー側のダウンローダーが保存する BLOB の名前を選択する方法

BLOB の準備が完了すると、UI は BLOB と選択したファイル名の両方を共有ダウンロード ユーティリティに渡します。このユーティリティは、オブジェクト URL とダウンロード名を使用してブラウザーの保存動作をトリガーします。提案がすでに解決されているため、最後のクリックではサーバーのヘッダーは参照されなくなります。

このメカニズムでは、既存のディスク ファイルの名前を変更したり、フォルダーを選択したりしません。ダイアログが表示されるかどうか、および重複した名前がどのように処理されるかはブラウザの設定によって決まります。 ToolAcre は 1 つの候補を提供します。ブラウザと訪問者は、ファイルシステムの最終的な結果に対して引き続き責任を負います。ユーザーは、名前だけを変更して不一致を「修正」することに抵抗する必要があります。メタデータまたはコンテンツを修正する必要があるかどうかを判断する前に、実際のコンテナとコーデックを検査してください。

拡張子と MIME タイプ: 一貫性を保つ — 実際には WebM である .mp4 というファイルがプレーヤーを混乱させる理由

`.mp4` 名を `video/webm` と組み合わせると、有能なプレーヤーがバイトを検査する場合でも、内線でルーティングするソフトウェアが混乱する可能性があります。 ToolAcre は、Content-Type に一致するように拡張子を書き換えるのではなく、パスまたはヘッダー名を保持します。また、サーバーの MIME 値も BLOB に保存されます。

ヘッダーとパス セグメントが存在しない場合、フォールバックは WebM または MP4 を含む Content-Type を認識し、`download.webm` または `download.mp4` を返します。他のすべてのタイプは `download.bin` になります。現在、オーディオ MIME 値は、この最後の手段のブランチを通じて特別な拡張子を受け取りません。 HEAD と GET の間で署名の有効期限が切れた場合、本文リクエストが失敗するためファイル名は得られません。名前付けは、読み取り可能な応答が成功した後にのみ開始されます。

実用的な例: 1 つの署名付き CDN リンクと 3 つの可能なファイル名 - どの名前が優先されるのか、そしてその理由を説明する

パスが `asset` で終わり、応答が `filename*=UTF-8''approved%20cut.mp4` で、タイプが `video/mp4` である署名付き CDN アドレスを取得します。エンコードされたヘッダーが優先され、`approved cut.mp4` が生成されます。ヘッダーを削除すると、パスは `asset` になります。そのセグメントも削除すると、MIME フォールバックで `download.mp4` が生成されます。

パスに `clip.mp4` と表示されている場合でも、使用可能なスター値が存在しない場合は、プレーン `filename="review.webm"` が優先されます。この例では、検証ではなく優先順位を示しています。 Content-Type の検査と、保存された結果を信頼できるソフトウェアで開くことは、名前が選択された後も個別のチェックのままになります。カタログは保存後にチェックサムをさらに記録できますが、ハッシュはこのダウンローダーの範囲外であり、表示されるバイト数によって暗示されるべきではありません。

これでカバーされないもの — ダウンロード後の名前変更、バッチ命名、またはファイル内のメタデータを読み取って名前を付けること

ダウンローダーは、ファイルにバッチ番号を付けたり、メディア コンテナからタイトル タグを読み取ったり、アーカイブ カタログをクリーンアップしたり、保存後に誤解を招く拡張子を修復したりすることはありません。また、すべての Content-Disposition 文法バリエーションがその焦点を絞った正規表現と一致することを保証することはできません。

後で名前を変更するのはオペレーティング システムのタスクです。アーカイブの名前が重要な場合は、ソース URL、応答タイプ、バイト数、承認された説明名を独自のカタログに記録してください。便利なヘッダーを出所として扱ったり、ファイル名拡張子を暗号化されたアイデンティティとして扱ったりしないでください。パス内の不正なパーセント エンコーディングは、ホスト品質の問題のもう 1 つです。現在のフォールバックは、サーバーが提供するすべての名前をすべてのオペレーティング システムのルールにサニタイズするとは主張しません。

要点: 名前は URL、ヘッダー、ツールの間のネゴシエーションです — ダイレクト メディア ダウンローダーを使用した後に保存されたファイルの名前と拡張子で何をチェックするか

実装される優先順位は具体的です。有効な UTF-8 スター ファイル名、プレーン ファイル名、デコードされた最終パス セグメント、次に `download.webm`、`download.mp4`、または `download.bin` です。クエリ文字列は、保存された名前の一部にならずに配信を承認できます。これは、多くの「ダウンロード」と「インデックス」の驚きの説明になります。

ダイレクト メディア ダウンローダーを使用した後、名前、拡張子、Content-Type、予想されるソース、および実際の再生可能性を比較します。これらの観察により、さまざまな疑問が解決されます。ファイル名をクリーンにすると処理が向上しますが、ファイルの実際の内容はホストのバイトと受信アプリケーションによってのみ決定されます。ファイル名の選択により使いやすさが向上しますが、出所は依然として承認されたソース、記録されたリクエスト、および完了したバイトの独立した検査から得られます。