2011-07-01 12 views
2

ユーザーが自分のコンピュータ上のファイルを選択することができますので、私は、ファイルを開くボックスを表示:の<input type = file>は、jwplayer、javascriptの質問

<input type="file" id="upload_input"/> 

が、私は、ユーザーはJavascript(で選択したファイルを取得私が信じるのは、JavaScriptがクライアント側で実行されてから安全だと思います - にもかかわらず、完全なパスとファイル名が次のフィールドに表示されます'Browse'ボタンには入力タイプ=ファイルが常に表示されます。

つまり、ユーザーは、たとえばc:/aFolder/thefile.rtfにある自分のマシンにあるファイルを選択します。 は、その後、次の「参照」ボタンへの完全なパスがフィールドに表示され、そのファイルを選択した後:C:/aFolder/thefile.rtfを

しかし、私はプログラム的にそのフィールドの値を取得する場合、全体のパスです剥ぎ取り、私が持っているすべてのファイル名です:

filename = document.getElementById('upload_input').value; 
alert("The selected file name is " + filename); 

はなぜ入力タイプ=ファイル制御も、あなたはプログラムでそれを得ることができない場合、ユーザーに完全なパスを表示するためにわざわざでしょうか? 結局のところ、クライアント側ですべてが起こっています。これは、サーバー上のフルパスではないようです。

もう1つの質問:上記のファイル名を使用し、のJWplayerコードを有効にするために、そのファイルへの完全修飾パスを作成します。ここで開発するために作成する完全なパスは、一時的にです。言い換えれば

、私は上記のファイル名を取得するとき、私はこれを実行します。

vidFname = ("c:/xampp/htdocs/theWebsite/aFolder/" + filename); 
alert("The full path is: " + vidFname); 

をしてから、私はJwplayerでビデオを再生しよう:

playlist = { file: vidFname }; 

theJwPlayer().load(playlist); 
theJwPlayer().play(true); 

しかしJwplayerは私に「許可を与えます拒否またはファイルが見つかりませんでした。演じるsuccesffullyビデオ負荷と -

vidFname = ("http://localhost/theWebsite/aFolder/" + filename); 
alert("The full path is: " + vidFname); 
playlist = { file: vidFname }; 
theJwPlayer().load(playlist); 
theJwPlayer().play(true); 

私はlocalhostへのパスを変更することにより、上記のコードは動作します:ここで

は、私が仕事にこれを取得するために変更しなければならなかったものです。

注:コンピュータ上の別の.FLVプレーヤー(スタンドアロン)アプリケーションで同じ場所に同じファイルを再生できるので、これは「フォルダのアクセス許可」の問題ではないと私は考えています。だから私のc:/ xamppのフォルダのアクセス許可ではないので、Jwplayerは '許可が拒否されたか、ファイルが見つかりません'と言っています。

私が jwplayer()を呼び出すときにJwplayer(またはJavascript ..?)でファイルに完全修飾パス名を使用させないのはなぜですか?load()?

結局のところ、クライアントコンピュータ上で実行されている Javascript で 'theJwPlayer'を使用しています。このファイルもクライアントコンピュータ上にあるため、セキュリティ上の問題はありません。

ここに何か不足していますか?注記:この質問が無知だが、私が現在使っているWebプログラミングのレベルでは、長い間前に渡っていたかもしれませんが、これは困惑しています.JWplayer()。load()は完全修飾パス名では動作しません。

答えて

2

ブラウザはJavaScriptコードへの実際のファイルパスを明らかにしません。それはセキュリティの問題です。 HTML5ファイル処理API(新しい、新しいブラウザでのみ利用可能)を使用せずにローカルファイルにアクセスすることはできず、完全なファイルパス名を与えることさえできません。

同様に、ファイル入力がフォームとともに送信されると、サーバーはフルパスも取得しません。

あなたが使っているこのメディアプレーヤーツールは、ローカルファイル(ブラウザが動作しているローカルファイルシステム上のファイル)で動作するようには設計されていない可能性が高いと思います。

+0

ありがとうございました - 教訓を学びました。 Javascriptもjwplayerも、ローカルマシンのファイルシステムにアクセスすることはできません。それを念頭に置いて、私はここで推測していますが、私のスタンドアローンプレーヤーはローカルマシン上のファイルにアクセスして再生するのに問題はありません - セキュリティ上の問題はありません - スタンドアロンビデオ私のラップトップのプレーヤー。また、スタンドアロンのプレーヤーはTCP/IPスタックも使用していません。ウェブサーバーとの通信ではありません。スタンドアローンプレーヤーはローカルファイルシステムに対するセキュリティ上の脅威ではありません。ありがとうPointy。 – wantTheBest

+0

新しいHTML5 API *にはいくつか興味深い可能性があります。それらがHTML5オーディオタグを介してローカルファイルをルーティングするために使用できるかどうかはわかりません。 – Pointy

関連する問題