89

とりわけ、ユーザーがサーバーにファイルをアップロードできるようにする Web アプリケーションを作成しています。名前の衝突を防ぎ、ファイルを整理するために、ファイルがサーバーに配置されたら名前を変更します。元のファイル名を追跡することで、バックエンドでファイル名を変更したことを知らずに、ファイルの所有者と通信できます。つまり、ファイルをダウンロードするまでです。その場合、見慣れない名前のファイルをダウンロードするように求められます。

私の質問は、HTML だけを使用してダウンロードするファイルの名前を指定する方法はありますか? したがって、ユーザーが「abc.txt」という名前のファイルをアップロードし、その名前を「xyz.txt」に変更しますが、ダウンロードするときに、ブラウザーにファイルをデフォルトで「abc.txt」として保存させたいと考えています。これが HTML だけでは不可能である場合、それを行う方法はありますか?

4

4 に答える 4

89

HTML で方法が見つかりません。content-disposition ヘッダーを出力するサーバー側スクリプトが必要になると思います。php では、これは次のように行われます。

header('Content-Disposition: attachment; filename="downloaded.pdf"');

デフォルトのファイル名を提供したいが、自動ダウンロードは提供したくない場合は、これでうまくいくようです。

header('Content-Disposition: filename="filetodownload.jpg"');

実際、ファイルを直接提供しているのはサーバーであるため、HTML はまったく関与していないため、HTML から操作する方法はありません。

于 2010-06-23T13:58:33.270 に答える
-1

まあ、@ Palantirの答えは、私にとって最も正しい方法です!

複数のファイルでそれを使用する予定がある場合は、PHP ダウンロード マネージャーを使用する (または作成する) ことをお勧めします。

しかし、それを1つまたは2つのファイルにしたい場合は、mod_rewriteオプションをお勧めします

htdocsフォルダーで.htaccessファイルを作成または編集し、これを追加する必要があります。

RewriteEngine  on 
RewriteRule ^abc\.txt$  xyz.txt

このコードを使用すると、ユーザーはabc.txtという名前のxyz.txtデータをダウンロードします。

注: ファイルに既に " RewriteEngine on " があるかどうかを確認します。ある場合は、リダイレクトするファイルごとに2 番目だけを追加します。

頑張ってください;) (私の英語でごめんなさい)

于 2010-06-23T14:04:26.687 に答える