2

ブラウザで2つのことをしたい:

  • テキストファイルをテキストエリアにロードします(ダイアログボックスで選択する必要があります)
  • テキストエリアのコンテンツをテキストファイルに保存します(ダイアログボックスで再度選択する必要があります)
  • ビデオファイルをロードし、ファイルパスを取得してビデオプレーヤーで使用します(1

私はインターネットでしばらく探していました。私が使用できないActiveXObjectsを介したIEのソリューションがいくつかあります(IE、真剣に?)。選択したファイルのパスにアクセスできないため、HTML5ファイルAPIのユーザビリティは制限されています。

textareasの保存ダイアログも見つかりましたが、奇妙な理由で改行が無視され、可能であればそれを修正する方法がわかりません。

だからここに私の要件とオプションがあります:

  • FFとChromeのサポート
  • JavaScript、HTML5(および必要に応じてPHP)
  • おそらくSilverlightですが、私はあまり詳しくないので、コピーして貼り付けるだけです:-/
  • Macでも動作する必要があります
4

4 に答える 4

3

FlashやSilverlightに頼ったり、サーバーを使用したりせずに仕事を終わらせる汚いハックがあり、ほとんどのブラウザーで動作します:

var uriContent = "data:application/octet-stream," + encodeURIComponent(fileContentsAsString);
window.open(uriContent, 'Save Your File');
于 2012-05-01T20:39:53.690 に答える
1

JS はサンドボックスで実行されます。つまり、ファイルシステム上のファイルにアクセスできません。HTML5 ファイル API は、ユーザーのファイル システムへの制限付きアクセスを許可する最初の「ネイティブ」 (フラッシュでも ActiveX でもない) 試みです。

于 2012-04-04T20:47:37.033 に答える
0

ファイル API は、データにアクセスできるようにする HTML であり、その後 JavaScript でバイナリ BLOB を操作できますが、記述されているように、これは要件に基づいて純粋な JS および HTML では不可能です。

大きな障害は「テキスト ファイルへの保存」です。これを行うことができた唯一の方法は、サーバー側言語 (PHP など) を呼び出す iFrame を開いて、ヘッダーのコンテンツ タイプをダウンロードを促すタイプに設定することです。

Flash と Silverlight は、サンドボックスの外部で実行される "クライアント" テクノロジであり、現時点ではこれが唯一の選択肢のように思えます。

于 2012-04-04T20:49:58.640 に答える
0

私のアイデア:

テキスト ファイルの読み込み: 通常の HTML アップロード フォームを使用します (スクリプトを作成する場合は、AJAX 経由で送信してください)。

テキストファイルを保存する: テキストエリアを使用し、送信時にサーバー側でファイルを作成してから、ダウンロードできるようにします。(前述のように、クライアント側のスクリプトはコンピューターのファイル システムにアクセスできません)

ビデオ ファイルの読み込み: ビデオは既にサーバー上にありますか? それ以外の場合は、テキスト ファイルと同様にアップロードが必要になります。次に、フラッシュ プラグインを使用して、サーバーからファイルを再生します (URI はその時点でわかっているはずです)。

これらはすべて、PHP を使用して比較的簡単に実現できます。テキストエリアからの改行は、PHP では \n のままです。チュートリアル: PHP でのフォーム処理、PHPでのファイルのアップロード

編集: PHP はサーバー側で実行されるため、ブラウザーの多様性のために多くの問題に遭遇することはありません。別の方法として、これらすべてを Flash や Silverlight で行うこともできますが、私の見解では、より多くの学習が必要であり、ユーザーにとって快適ではありません。

于 2012-04-04T20:59:38.620 に答える