2016-07-07 10 views
1

Ich versuche, einen Benutzer zu ermöglichen, eine Datei von ihrem Computer auszuwählen und Seeding es, ich habe das Beispiel here gefolgt. Ich habe eine normale Eingabe verwendet, anstatt Drag & Drop zu verwenden, da ich es nicht zum Laufen bringen konnte.Seeding-Dateien aus dem Browser

Nun, wenn eine Datei ausgewählt ich diesen Fehler:

Uncaught Error: filesystem paths do not work in the browser

Wie kann ich Aussaat beginnen aus dem Computer eines Benutzers, ohne die Datei auf meinem Server hochladen?

+1

können Sie PHP verwenden? –

+0

Nicht sicher, ich denke, ich könnte eine Art Ajax verwenden. Was schlägst du vor? –

+0

Em ich bin neu zu Web-Entwickler zu lol, aber ich weiß, wie man Datei mit PHP zu senden, weil zwei meiner Projekte von PHP angetrieben wird, wenn Sie interessiert sind, kann ich eine Antwort unten lassen. –

Antwort

2

Ich glaube, Sie haben versucht, eine Datei mit file:/// zu lesen, aber das ist aus Sicherheitsgründen nicht möglich. Eine Datei muss ausgewählt oder vom Benutzer fallen gelassen werden &. Die einfachste Lösung ist mit einem Knopf:

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)" />

Mit diesem Code-Schnipsel Sie eine Datei ohne Interaktion mit einem Server lesen können, und das ist für ein serverless techlology wie torrent ideal.

+0

Ich habe Ihren Code getestet, er gibt den Inhalt der Datei erfolgreich aus, aber er friert den Browser ein. Ich brauche den Systempfad der Datei, damit ich die Datei säen kann. –

+1

Ja, wenn Sie eine größere Datei verwenden, wird sie einfrieren, aber das liegt nur an der 'console.log'. Wenn Sie es nur in einer Variablen sichern, ist es in Ordnung. Zum zweiten Teil: Sie erhalten niemals direkt Zugriff auf die Dateien! Aber in der Dokumentation ist dies 'client.seed (dateien, callback)', mit dem sollte einfach die 'evt.target.files' direkt oder nur eine Datei, wie im Beispiel, verwenden können. – Julian

+0

Das hat perfekt funktioniert, vielen Dank. –

Verwandte Themen