Daten versenden ohne Formular Objekte
Frankie
- programmiertechnik
Hallo zusammen
auf meiner Seite stehen hat man die Möglichkeit Dateien auf den Server hochzuladen. Ab jetzt stehen diese nur noch in einer Liste und mit einem Aktualisieren Button soll man die Möglichkeit bekommen diese Dateien aktualisieren zu bekommen.
Doch wie schaffe ich es denn per Submit diese Dateien hochladen zu können, da ich ja bisher nur finen konnte das es ja nur per php möglich sein soll?
Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.
Würd mich also über Hilfe sehr freuen.
Danke Gruß Frankie
auf meiner Seite stehen hat man die Möglichkeit Dateien auf den Server hochzuladen. Ab jetzt stehen diese nur noch in einer Liste und mit einem Aktualisieren Button soll man die Möglichkeit bekommen diese Dateien aktualisieren zu bekommen.
Willst du den Nutzern die Möglichkeit geben Dateien auf dem Server zu aktualisieren oder sich eine aktuelle Datei vom Server herunterzuladen?
Hallo zusammen und Vielen Dank
ich Recherchierte weiter und fand diese Seite:
http://www.it-gecko.de/html5-file-upload-fortschrittanzeige-progressbar.html
Und daraus versuche ich folgendes:
var client = new XMLHttpRequest();
var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")
alert(Datei)
client.open("POST", "upload.php");
client.send(Datei);
<?php
if (isset($_FILES['datei']))
{
move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));
}
?>
Ich qürde auch gerne wissen wo die Datei dann landet. Und wie soll ich mit der Seite auf diese Datei wieder zugreifen können?
Aber bis jetzt ist kein Ergebnis zu sehen. Also wie soll das denn dan funktionieren. Ach und was vielleicht noch interessant sein sollte ist, dass zZ nur server2go eingesetzt wird.
Danke Gruß Frankie
Hallo zusammen und Vielen Dank
ich Recherchierte weiter und fand diese Seite:
http://www.it-gecko.de/html5-file-upload-fortschrittanzeige-progressbar.htmlUnd daraus versuche ich folgendes:
var client = new XMLHttpRequest();
var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")
alert(Datei)
client.open("POST", "upload.php");
client.send(Datei);
> ~~~php
<?php
> if (isset($_FILES['datei']))
> {
> move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));
> }
> ?>
>
Ich qürde auch gerne wissen wo die Datei dann landet. Und wie soll ich mit der Seite auf diese Datei wieder zugreifen können?
Aber bis jetzt ist kein Ergebnis zu sehen. Also wie soll das denn dan funktionieren. Ach und was vielleicht noch interessant sein sollte ist, dass zZ nur server2go eingesetzt wird.
Danke Gruß Frankie
Da sind nen paar trivial Fehler drin (die mir spontan auffallen):
dein JS ruft ein Frame ab. Hast du ein Frameset? Und wenn ja, initialisiert du denn die "frames" Variable? Und selbst wenn du Frames hast, befindet sich das Feld in einem anderen Frame?
Dein PHP Schnipsel ist 1:1 kopiert, du musst dort einen gültigen Path angeben. Sonst gibts nur einen Fehler: '/pfad_zur_zieldatei/'
Ganz wichtig, hast du dein Script ohne JS zum laufen gebraucht? Reduziere deine Aufgabe auf ein machbares Minimum und verbessere es anschließend.
Viele Grüße, Ch
Hallo Ch
Ja die Zeile wurde 1:! rauskopiert und ich ich sammle die Dateien in einem iframe. Also sollte zur php Zeile die komplette Verknüpfung zur Datei gesendet werden, so dass also klar sein sollt um welche Datei es sich handelt.
Also wie soll dann die php Zeile aussehen?
Danke Gruß Frankie
Hallo Ch
Ja die Zeile wurde 1:! rauskopiert und ich ich sammle die Dateien in einem iframe. Also sollte zur php Zeile die komplette Verknüpfung zur Datei gesendet werden, so dass also klar sein sollt um welche Datei es sich handelt.
Also wie soll dann die php Zeile aussehen?
Danke Gruß Frankie
Nochmal:
Hast du dein Upload-Formular ohne die Javascript Variante bereits nutzen können? Wenn nein, dann prüfe erst das, denn siehst du die PHP-Fehler offensichtliche.
Hallo Ch
ja ich übergebe ja eine Variable. Ich will kein Formular nutzen um Daten an die PHP Datei senden zu können. Und so sehe ich keine Fehlermeldungen. Ich sollte ja wisen wie ich in der PHP Datei mit der übergebenen Variab le umgehe. Oder am besten gleich so:
Es sind Links die in diesem iframe stehen und da soll es die Möglichkeit geben meherere Dateien aktualisieren zu können. Also sollte ich muss ich ja wissen wie ich in der php Datei mit solchen Variablen umgehen kann.
Danke Gruß Frankie
Hallo zusammen
ich habe weitere interessante Zeilen gefunden:
ar $Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")
$.post("Upload.php", { Datei: $Datei })
<?php
move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_POST['Datei']);
?>
Doch funktionieren will weiterhin nix. Also bitte ich um Hilfe.
Danke Gruß Frankie
Hallo,
ich bin gespannt ob Du wirkliche Hilfe hier bekommst.
Ich glaube: NEIN
Ulli
Tach!
Doch funktionieren will weiterhin nix. Also bitte ich um Hilfe.
Hast du den Artikel auf der von dir selbst angegebenen URL überhaupt gelesen und verstanden, besonders die Voraussetzungen an seinem Anfang? XMLHttpRequest in Version 2, ein File-Objekt aus der FileAPI und ein FormData-Objekt. Ich sehe bei dir nur einen Zugriff auf irgendwas mit Frames, vermutlich kommt da ein String raus. Ein String ist jedoch weder eine Datei (sondern höchstens ihr Name) noch ein FormData-Objekt. Zudem wirst du damit auch nicht ans Ziel kommen. Die sicherheitstechnischen Einschränkungen der FileAPI besagen, dass ein File-Objekt nicht aus einem Dateinamen erzeugt werden darf sondern immer nur über eine Benutzerhandlung.
dedlfix.
Hallo zusammen und Vielen Dank
ich Recherchierte und stoß auf eine Variante, so dass ich folgendes versuche:
var client = new XMLHttpRequest();
var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")
alert(Datei)
client.open("POST", "upload.php");
client.send(Datei);
<?php
if (isset($_FILES['datei']))
{
move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));
}
?>
Doch ohne jeglichen Erfolg. Ich weis auch nicht wo die Datei jetzt landet. Und noch zur Info, dassich zZ noch mit server2go arbeite.
Danke Gruß Frankie
hi,
Doch wie schaffe ich es denn per Submit diese Dateien hochladen zu können, da ich ja bisher nur finen konnte das es ja nur per php möglich sein soll?
Du brauchst einen UserAgent. Wie wärs mit einem Perl-Script?
Hotti
Tach!
Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.
Was du vorhast, darf nicht funktionieren. Wenn ein Browser anhand einer Liste oder einer sonstigen Quelle mit Dateinamen selbständig auf diese Dateien zugreifen dürfte, könnte er auch auf Dateien zugreifen, die man lieber nicht automatisch von einem Browser ins Web geschickt sehen möchte. Der Nutzer muss willentlich die Dateien aus seinem Dateisystem auswählen.
dedlfix.
Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.
Dann beachte das, was dedlfix Dir zweimal deutlich geschrieben hat: Ein Webbrowser ist ungeeignet, weil dieser vom Bediener eine Interaktion (just die Dateiauswahl) einfordern MUSS - sonst könnten nämlich beliebige (konkret mit den Rechten des Bedieners lesbare) Dateien von beliebigen Rechnern auf Server von Angreifern geladen werden. Das konterkariert jegliche Datensicherheit derart, dass es sich absolut verbietet und die Hersteller von Browsern derlei sorgfältigst zu verhindern suchen. Gäbe es eine Möglichkeit, dann wäre das ein schwerer, sicherheitsreleventer Bug und mit dem nächsten Update behoben.
Lösung ohne Browser:
Schreibe Dir in einer geeigneten Sprache geschriebenes Programm(1), welches vom Nutzer gestartet wird und die Date(ie)n auf den Server überträgt und/oder benutze geeignet Tools.
Gehe ich von Windows aus, dann würde ich Dir dazu raten, wget zu installieren und durch ein cmd-Skript (.bat) zu steuern. Dessen Hilfe sagt:
--post-file=file
Use POST as the method for all HTTP requests and send the
specified data in the request body. --post-data sends string as
data, whereas --post-file sends the contents of file. Other than
that, they work in exactly the same way. In particular, they both
expect content of the form "key1=value1&key2=value2", with
percent-encoding for special characters; the only difference is
that one expects its content as a command-line parameter and the
other accepts its content from a file. In particular, --post-file
is not for transmitting files as form attachments: those must
appear as "key=value" data (with appropriate percent-coding) just
like everything else. Wget does not currently support
"multipart/form-data" for transmitting POST data; only
"application/x-www-form-urlencoded". Only one of --post-data and
--post-file should be specified.
Unter Linux oder auf einem Apple würde ich ein shell-Skript zum Steuern verwenden. Beide Möglichkeiten lassen sich unter Verwendung eines hübschen Icons auch als Eintrag in einem Startmenü oder auf dem Desktop verwenden.
(1) geeignete Sprache