2016-07-07 8 views
1

私はユーザーが自分のコンピュータからファイルを選択してシードを開始できるようにしようとしていますが、例はhereです。私はそれを動作させることができなかったので、ドラッグアンドドロップを使用するのではなく、通常の入力を使用しました。ファイルが選択されるたびにブラウザからファイルをシードする

は今、私はこのエラーを取得する:

Uncaught Error: filesystem paths do not work in the browser

は、どのように私は私のサーバーにファイルをアップロードすることなく、ユーザーのコンピュータから種付け開始することができますか?

+1

PHPを使用できますか? –

+0

わかりませんが、私はある種のAjaxを使うことができると思います。何をお勧めしますか? –

+0

エム私はWeb開発者にも笑すぎますが、私は私のプロジェクトのうちの2つがPHPによって動かされているので、PHPを使ってファイルを送信する方法を知っています。 –

答えて

2

私はあなたがfile:///でファイルを読むことを試みたと思うが、これはセキュリティの理由から不可能である。ファイルを選択するか、ユーザーからドロー&がドロップされている必要があります。このスニペットで

function readFile(evt) { 
 
    var file = evt.target.files[0] 
 
    if (!file) { 
 
    return 
 
    } 
 
    var reader = new FileReader() 
 
    reader.onload = evt => { 
 
    var contents = evt.target.result 
 
    console.log(contents) 
 
    } 
 
    reader.readAsText(file) 
 
}
<input type="file" onchange="readFile.call(this, event)" />

は、サーバーとの対話なしのファイルを読むことができますし、急流のようなサーバレスtechlologyのための理想的なのthats: 最も簡単な解決策は、ボタンです。

+0

あなたのコードをテストしたところ、ファイルの内容は正常に出力されましたが、ブラウザがフリーズしました。ファイルのシステムパスが必要なので、ファイルをシードできるようにしました。 –

+1

大きなファイルを使用すると、これは 'console.log'のためだけです。あなたがそれを変数でのみ安全なら、それはうまくいくでしょう。 2番目の部分:ファイルに直接アクセスすることはありません!しかし、この 'client.seed(ファイル、コールバック)'のドキュメントでは、この例のように、 'evt.target.files'ディレクトリまたは1つのファイルだけを簡単に使用できるはずです。 – Julian

+0

これは完全に機能しました。ありがとうございます。 –

関連する問題