You are not logged in.

  • Login

1

Sunday, October 15th 2006, 2:18pm

Ajax PHP Upload

So jetzt wirds Zeit mich dem Thema "Ajax PHP Upload" und einem "Upload Status Meter" zu widmen.
Ich habe hier und in einigen anderen Foren schon verschiedene Einträge dazu verfolgt. Die Meinungen gingen von irgendwelchen round-around Lösungen bis hin zu nicht möglich.

Ich starte nun ein neues Thema hier, da die alten hier schon etwas länger zurückliegen und keine wirklichen End-Fazite lieferten.

Mal kurz alles zusammengefasst:
PHP kann auf das Temp-File, in dem das upzuloadende File zwischengespeichert wird nicht zugreifen. Dadurch lässt sich eine Status-Anzeige praktisch nicht realisieren. Hierzu gibt es Perl-Ansätze, die diese Funktion umsetzen, oder die Möglichkeit PHP zu patchen.
Ausserdem kann man nicht den File-String aus dem Formular einem XMLHttpRequest übergeben, so dass ajax hier scheitert.
Es soll eine Möglichkeit geben, diesen in ein iframe zu verschachteln.
Habe selbst damit aber noch nie gearbeitet.

Java und Perl steht mir leider nicht zur Verfügung. Heisst das, dass ich auch kein CGI verwenden kann?

Hat einer mittlerweile neue Möglichkeiten entdeckt, einen Ajax PHP Upload zu realisieren, der die Aussage "ist nicht möglich" oder "nur begrenzt möglich" widerlegen kann?

Würde mich auf Post freuen, die mir bei der Evaluierung und Entwicklung auf diesem Themengebiet hilfreich sind.

2

Sunday, October 15th 2006, 5:03pm

eine lösung ist es, auf php 5.2 zu warten ;-)
da ist der patch bereits integriert
lesen: http://blog.bitflux.ch/archive/2006/09/28/upload-progress-meter-extension-for-php-5-2.html

ansonsten: warum hast du php, aber kein perl? perl ist doch überall dabei
schonmal ausprobiert?

3

Sunday, October 15th 2006, 6:11pm

Ich hatte schon mal versucht ein test.cgi Skript zum Laufen zu bringen, aber leider ergebnislos. Ich habe mein htdocs von C:\apache\htdocs\ auf D:\www umkonfiguriert. Ich habe sowohl dort ein cgi-bin Verzeichnis angelegt und die Testdatei hineinkopiert, als auch in dem orginalen htdocs/cgi-bin. Ich bekomm aber immer die Fehlermeldung mit dem Code 500.
Ist Perl und CGI eigentlich das gleiche?

4

Sunday, October 15th 2006, 6:13pm

nein, perl ist nicht cgi
define:cgi

nutzt du xamp? bei xamp ist perl sicher dabei

5

Monday, October 16th 2006, 4:11am

Nee.. hab alles einzeln installiert und konfiguriert. Apache, PHP, MySQL

6

Tuesday, October 17th 2006, 10:24am

Wann erscheint denn PHP5.2? Hier kann man schon was runterladen http://downloads.php.net/ilia/

7

Tuesday, October 17th 2006, 11:23am

Quoted from ""nilitsch""

Wann erscheint denn PHP5.2?


when it's done ;-)

9

Thursday, October 19th 2006, 10:52am

Also... also auf meinem lokalen Testserver kann ich kein Perl interpretieren. Aber auf meinem richtigen Server klappt das schon. Hat jemand eine gute Seite, wie man so'n Fortschrittsbalken in Perl umsetzt? Habe von Perl kein blassen Schimmer :-(

10

Thursday, October 19th 2006, 2:02pm

wenn du kein perl kannst, nimm doch am besten das fertige script
http://tomas.epineer.se/tesupload/

11

Thursday, October 19th 2006, 5:49pm

Hab ich mir schon angeschaut. Die Setting-Datei muss man aber am Pfad ueber den root abspeichern. Da komm ich bei meinem Server aber nicht ran.

Wie sieht es eigentlich mit ruby on rails aus? Hab da auch schon was dazu entdeckt. Und rails macht in sachen web eigentlich einen sehr interessanten Eindruck.

12

Thursday, October 19th 2006, 7:16pm

ruby ist auch cool...
aber genau wie bei perl musst du ruby halt auch erst lernen, bevor du es anwenden kannst
und wenn du keinen eigenen server hast, wird es schwer einen ruby hoster zu finden

btw: das perl script hat nix mit dem benutzer root zu tun
du musst upload_settings.inc in deinem web-root ablegen
also z.b. in /var/www/web500/html

13

Friday, October 20th 2006, 3:08am

Am liebsten wuerde ich es gern selber machen. Nehmen wir mal an ich nehm das CGI-File von tesupload. Koenntest Du mir erklaeren was das macht? Nehme ungern was ohne zu wissen, wie es genau arbeitet..

14

Friday, October 20th 2006, 12:21pm

wie siehts mit deinem englisch aus? die cgi datei ist doch super dokumentiert
also der upload läuft über perl - fileprogress.php erhält die dateinamen des uploads, fragt die dateigröße ab und gibt diese aus
ajax arbeitet dann wiederum mit dieser ausgabe

Quoted

# ...we handle the post data with the perl
# CGI module that means the PHP script does not get access to the
# files, but there is a way around this.
# We can ask the CGI module to save the files, then we can pass
# these filenames to the PHP script...

15

Sunday, October 22nd 2006, 1:50pm

Also... ich habe mal cgi und perl Files auf meinem Server getestet. CGI kann er nicth ausführen und auf das cgi-bin-Verzeichnis habe ich keinen Zugriff. Ein HelloWorld.pl konnte er mir aber anzeigen.

Jetzt ist das Problem bloss, dass tesUpload cgi und nicht pl verwendet? Was tun?


Ausserdem habe ich mit den Konfigurationen Schwierigkeiten. Ich habe den Settings-Path auf meinen normalen Test-Webserver-Ordner gesetzt und ein Verzeichnis /tmp/uploads angelegt. Ausserdem habe ich den path auf das cgi-Script statt "cgi-bin" auf "pl" gesetzt und dort das upload.cgi auf upload.pl umbenannt.
Naja...ich habe hier sicherlich einiges falsch gemacht.
Jedenfalls sagt mir der Browser "Warning: PHP can't write to upload dir (/tmp/uploads)."

16

Sunday, October 22nd 2006, 1:57pm

warum hast du kein zugriff auf cgi-bin?

Quoted from ""nilitsch""

Jetzt ist das Problem bloss, dass tesUpload cgi und nicht pl verwendet?


war das nicht ein perl script verpackt in einer cgi datei?
dann müsstest du nur die shebang zeile mit dem pfad zum perl interpreter anpassen

17

Sunday, October 22nd 2006, 2:25pm

Ich lade meine Dateien in ein eigenes Verzeichnis. Darüberhinaus kann ich nicht zugreifen.

Ja, es scheint ein Perl Skript zu sein. Die erste Zeile lautet "#!/usr/bin/perl -w"
Und dann kommt "use CGI;"

Den Settings-path
$docroot = $ENV{DOCUMENT_ROOT};
$settingsfile = $docroot."/../upload_settings.inc";
setze ich auf
$settingsfile = "../upload_settings.inc";

Weiss nicht ob, das so korrekt ist. Soferns nicht läuft, habe gar keine Anhaltspunkte. Das einziogste ist, dass ich das PerlSkript mit upload.pl?test testen kann, wo ich folgende Ausgabe bekommen:
Perl seems to be installed and working!
Settings
Max upload size: 5000000
Temp dir: /tmp

Die Warning "Warning: PHP can't write to upload dir (/tmp/uploads)." bekomme von der upload_helper.php

PHP Quellcode

1
2
3
if(!is_writable($upload_dir)) {
	echo "Warning: PHP can't write to upload dir ($upload_dir).<br />";
}


$upload_dir steht in der Settings, genauso wie $tmp_dir, wofür es auch eine solche Abfrage gibt. Aber dies scheint zu laufen, da diese Warning-Message nicht erscheint.

Quoted

dann müsstest du nur die shebang zeile mit dem pfad zum perl interpreter anpassen


Was zum Kuckkuck ist eine shebang zeile? Und wo und wie kann ich diesen Pfad anpassen?

18

Sunday, October 22nd 2006, 3:23pm

Quoted

#!/usr/bin/perl -w

genau das ist die shebang zeile - den pfad musst du unter umständen anpassen

auf nem linux system musst du in der shell folgendes eintippen um den pfad zu bekommen

Bash

1
whereis perl


auf nem windows system einfach mit der dateisuche nach perl suchen ;-)
wird vermutlich etwas wie c:\xampp\perl.exe sein

der sourceforge mirror ist grad down,.. kannst das komplette archiv ja gerade mal hier als forenanhang hochladen - ist ja openSource

19

Sunday, October 22nd 2006, 4:26pm

Ok...werds nachher mal anhaengen. Bisher noch keine Idee, warum die PHP Warning kommt?

Zur shebang:
In der Zeile steht ja schon der Pfad von einem linux/unix system (/usr/bin/perl).

Wegen Windows... meinst Du das in fuer die Anpassung meiner lokalen Windows-Plattform, wenn ichs lokal testen moechte?

----------
Edited:
Ich finde bei mir auf dem Windows-Rechner kein Perl (Habe Apache, PHP und MySQL von Hand installiert). Auf meinem Mac finde ich dieses /user/bin/perl. Wenns ichs dort aber ausfuehre wird mir nur der Quelltext angezeigt. Also laeuft auch nicht.

20

Monday, October 23rd 2006, 6:42am

Hier das tesUpload Packet....
nilitsch has attached the following file:

Similar threads

Social bookmarks