0

私は、ユーザーがPNGファイルを選択し、それにチャンクを書き込んiTXtで、それをローカル ファイル システムに保存できるようにする Web アプリケーションを作成しています。そのためには新しいFileWriterAPI を使用しますが、現在のところ Google Chrome だけがサポートを追加しています。

ファイルはメモリ内でバイナリ文字列として表されるため、データ URI を使用して、次のようにユーザーにファイルを保存するように求めます。

window.location.href = "data:application/octet-stream;base64," + btoa(blob);

MIME タイプはapplication/octet-streamブラウザーであるため、ユーザーはそれを開くか保存するように求められます。ただし、問題は、ユーザーがファイルの種類がわからないことです。そのため、ユーザーはファイル拡張子を手動で追加する必要があります。

現在、ファイルを保存する必要がある拡張子をユーザーに警告しています。しかし、これは洗練されていない解決策のようです。同じ結果を達成するためのより良い方法はありますか?

4

1 に答える 1

1

これが HTTP の場合、MIME タイプがわかっている場合でもファイルを保存するには、コンテンツの性質を添付ファイルに設定するか、またはオクテット ストリーム タイプの添付ファイルのファイル名を設定する必要があります。ただし、これらのヘッダーはどちらもdata:URIを使用してエミュレートすることはできないため、そのような URI を使用して [名前を付けて保存] ダイアログを開く方法がわかりません。

他の人がjs 変数のファイル保存ダイアログを開く方法を尋ねました。そこでの回答から判断すると、クライアントに Flash がインストールされている (ブロックされていない) 限り機能する、すぐに使用できるソリューションがあるようです。

FileWriterしたがって、おそらく、あなたが言及したものから始めて、それが利用できない場合はフラッシュベースのアプローチを試しdata:、ファイル名拡張子に関する警告メッセージで URI にフォールバックする、いくつかのソリューションを試すことができます。そうすれば、おそらく各クライアントにとって可能な限り最高の結果を達成できるでしょう.

于 2012-07-24T14:06:05.627 に答える