lokales Verzeichnis scannen [opendir( c:/test_picture )]

lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 07:54:56 von Udo Pecher

Guten Morgen,

eine neu programmierte Funktion für die Homepage scannt das lokale
Verzeichnis c:\test_picture auf der Festplatte nach *.JPG und zeigt diese
auf einem (HTML-) Formular an (Codeauszug siehe unten). Ziel ist die
gefundenen lokalen Dateien per FTP auf Knopfdruck ins Web-Laufwerk zu laden,
um sie für eine Galerie bereitzustellen. Auf der lokalen PHP-Testumgebung
eines Home-PCs funktioniert der lokale Scan-Vorgang und der Transfer ins
Web. Nach Integration auf der richtigen Homepage funktioniert der
Scanvorgang nicht. Die Homepage findet kein Verzeichnis c:\test_picture.

Meine Frage: ist das Scannen eines lokalen Laufwerks aus dem Web
grundsätzlich nicht möglich, bzw. sind besondere Freigaben (Firewall usw. )
notwendig? Ist diese Vorgehensweise unüblich? Gibt es eine alternative
Lösung?

$img_local_folder="c:\test_picture";
if (is_dir($img_local_folder))
{
$db = opendir($img_local_folder) or die("folder must exist for picture
upload");
while($item = readdir($db))
{
// Bildernamen listen
// ...
}
}

Für Hinweise besten Dank
Udo Pecher

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 10:13:19 von Helmut Chang

Udo Pecher schrieb:

> Auf der lokalen PHP-Testumgebung
> eines Home-PCs funktioniert der lokale Scan-Vorgang und der Transfer ins
> Web. Nach Integration auf der richtigen Homepage funktioniert der
> Scanvorgang nicht. Die Homepage findet kein Verzeichnis c:\test_picture.
>
> Meine Frage: ist das Scannen eines lokalen Laufwerks aus dem Web
> grundsätzlich nicht möglich,...

Natürlich nicht. Denke einmal nach: stell dir vor, jede x-beliebige
Website könnte deine lokalen Daten auslesen...

gruss, heli

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 17:42:09 von Niels Braczek

Udo Pecher schrieb:

> Meine Frage: ist das Scannen eines lokalen Laufwerks aus dem Web=20
> grundsätzlich nicht möglich, bzw. sind besondere Freigaben (Firewal=
l usw. )=20
> notwendig? Ist diese Vorgehensweise unüblich?

Natürlich geht das nicht.

> Gibt es eine alternative=20
> Lösung?

In HTML:

> $img_local_folder=3D"c:\test_picture";
^^
Selbst wenn der Zugriff möglich wäre, ginge es hier schief.
http://www.php.net/manual/en/language.types.string.php

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 17:47:33 von Udo Pecher

> Natürlich nicht. Denke einmal nach: stell dir vor, jede x-beliebige
> Website könnte deine lokalen Daten auslesen...
>

Das akzeptiere ich. Doch es wundert mich schon, dass es folgenden tag gibt:
.
Damit kann man doch von der Webseite aus lokal browsen. Nur eben würde ich
diese Funktion etwas komfortabler gestalten wollen.

Gruß Udo Pecher

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 18:07:19 von Udo Pecher

> Meine Frage: ist das Scannen eines lokalen Laufwerks aus dem Web
> grundsätzlich nicht möglich, bzw. sind besondere Freigaben (Firewall
> usw. )
> notwendig? Ist diese Vorgehensweise unüblich?

Natürlich geht das nicht.

> Gibt es eine alternative
> Lösung?

In HTML:

> $img_local_folder="c:\test_picture";
^^
Selbst wenn der Zugriff möglich wäre, ginge es hier schief.

"Aber" genau wie bei User sein eigenes Directory. Ziel ist doch nur die Files eines bestimmten
Dir namentlich zu sehen (gegebenenfalls nach Drücken einer Schaltfälche
"Durchsuchen" wie bei obigen HTML-tag). Mit einer erweiterten Version des
tags könnte man komfortabeler mehrere Bilder gleichzeitig verarbeiten ....

Gruß, Udo Pecher

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 19:18:05 von Claus Reibenstein

Udo Pecher schrieb:

>> Natürlich nicht. Denke einmal nach: stell dir vor, jede x-beliebige
>> Website könnte deine lokalen Daten auslesen...
>
> Das akzeptiere ich. Doch es wundert mich schon, dass es folgenden tag gibt:
> .

Was wundert Dich daran?

> Damit kann man doch von der Webseite aus lokal browsen.

Du sagst es: lokal. Was Du aber möchtest, ist, vom Server aus auf Deinem
Rechner zu browsen. Und genau das geht aus bereits genanntem gutem Grund
nicht.

> Nur eben würde ich
> diese Funktion etwas komfortabler gestalten wollen.

Aber nicht mit PHP. PHP läuft auf dem Server, nicht auf dem Client.

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 21:50:04 von Udo Pecher

Claus Reibenstein schrieb:
>
>
> Aber nicht mit PHP. PHP läuft auf dem Server, nicht auf dem Client.
>
Ok, doch welche Schritte/Module muss man nun programmieren, damit die
Besucher einer Homepage ihre Fotos auf den entsprechenden Webserver (über
eine Funktionalität der Homepage) laden können.
Vielen Dank in voraus, Udo Pecher

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 22:06:00 von Claus Reibenstein

Udo Pecher schrieb:

> Claus Reibenstein schrieb:
>
>> Aber nicht mit PHP. PHP läuft auf dem Server, nicht auf dem Client.
>
> Ok, doch welche Schritte/Module muss man nun programmieren, damit die
> Besucher einer Homepage ihre Fotos auf den entsprechenden Webserver (über
> eine Funktionalität der Homepage) laden können.

Ist das jetzt eine Frage? :-)

Du erstellst ein HTML-Formular

mit einem Dateieingabefeld type="file"> (hast Du ja in schon
genannt). Details hierzu findest Du z.B. in SelfHTML. Auf dem Server
brauchst Du dann noch ein PHP-Script, welches die Antwort des Benutzers
dieses Formulars auswertet.

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 22:13:36 von Rauch Christian

Udo Pecher schrieb:
> Ok, doch welche Schritte/Module muss man nun programmieren, damit die
> Besucher einer Homepage ihre Fotos auf den entsprechenden Webserver (über
> eine Funktionalität der Homepage) laden können.

http://de.php.net/manual/de/features.file-upload.php

> Vielen Dank in voraus, Udo Pecher

Gruß,
Christian

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 21.01.2007 22:27:51 von Udo Pecher

"Claus Reibenstein" schrieb:
>>
>>> Aber nicht mit PHP. PHP läuft auf dem Server, nicht auf dem Client.
>>
>> Ok, doch welche Schritte/Module muss man nun programmieren, damit die
>> Besucher einer Homepage ihre Fotos auf den entsprechenden Webserver (über
>> eine Funktionalität der Homepage) laden können.
>
> Ist das jetzt eine Frage? :-)
Ja.

>
> Du erstellst ein HTML-Formular mit einem Dateieingabefeld > type="file"> (hast Du ja in schon
> genannt). Details hierzu findest Du z.B. in SelfHTML. Auf dem Server
> brauchst Du dann noch ein PHP-Script, welches die Antwort des Benutzers
> dieses Formulars auswertet.
Ich bin davon ausgegangen, dass wenn nun ein Besucher einer Homepage in
einem Formular mit dem den Namen eines Fotos z.B.
c:\test.jpg auswählt, dieser Name an eine Funktion ftp_put ... übergeben
wird, die dieses dann zum Webserver überträgt. Ich bin mir nur nicht sicher
ob man nun mit ftp_put auf das lokale File irgendeines Besuchers zugreifen
und auf das entsprechende Weblaufwerk übertragen kann. In meiner
PC-Testumgebung localhost ... kann ich ein Bild ins Webverzeichnis via FTP
laden, von meiner Webseite aus funktioniert der Zugriff derzeit noch nicht.
Sollte das so funktionieren??

Gruß Udo Pecher

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 22.01.2007 07:35:22 von Johannes Vogel

Hi Udo

Udo Pecher wrote:
> Ich bin davon ausgegangen, dass wenn nun ein Besucher einer Homepage in
> einem Formular mit dem den Namen eines Fotos z.B.
> c:\test.jpg auswählt, dieser Name an eine Funktion ftp_put ... übergeben
> wird, die dieses dann zum Webserver überträgt. Ich bin mir nur nicht sicher
> ob man nun mit ftp_put auf das lokale File irgendeines Besuchers zugreifen
> und auf das entsprechende Weblaufwerk übertragen kann. In meiner
> PC-Testumgebung localhost ... kann ich ein Bild ins Webverzeichnis via FTP
> laden, von meiner Webseite aus funktioniert der Zugriff derzeit noch nicht.
> Sollte das so funktionieren??

Nein, kein FTP. Es wird ein HTTP POST abgesetzt und darin das File
angehängt. Wie das geht, liest du am besten hier:

Chapter 38. Handling file uploads
http://www.php.net/manual/en/features.file-upload.php

HTH, Johannes

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 22.01.2007 15:08:24 von Bernd Muent

Udo Pecher schrieb:

> "Aber" genau wie bei > User sein eigenes Directory. Ziel ist doch nur die Files eines bestimmten
> Dir namentlich zu sehen (gegebenenfalls nach Drücken einer Schaltfälche
> "Durchsuchen" wie bei obigen HTML-tag). Mit einer erweiterten Version des
> tags könnte man komfortabeler mehrere Bilder gleichzeitig verarbeiten ....

Sowas geht mit PHP nicht, da PHP serverseitig läuft. Was du bräuchtest
ist zB ein JavaApplet, daß dann ein Array der Dateien im entsprechenden
ausgewählten lokalen Ordner auf dem Client anlegt, dieses serialisiert
und per HTTP-Request an den Server schickt.
Beispiel dafür habe ich gerade keins parat, mir fällt nur die
Dateiverwaltung von Webmin ein, die haben genau so etwas integriert.

B.

--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt@bmservices.de

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 22.01.2007 18:33:32 von Matthias Esken

On Sun, 21 Jan 2007 22:27:51 +0100, Udo Pecher wrote:

> Ich bin davon ausgegangen, dass wenn nun ein Besucher einer Homepage in
> einem Formular mit dem den Namen eines Fotos z.B.
> c:\test.jpg auswählt, dieser Name an eine Funktion ftp_put ... übergeben
> wird, die dieses dann zum Webserver überträgt. Ich bin mir nur nicht sicher
> ob man nun mit ftp_put auf das lokale File irgendeines Besuchers zugreifen
> und auf das entsprechende Weblaufwerk übertragen kann.

Nein. Schau dir den dritten Parameter der Funktion an. Der heißt nicht
umsonst "local_file". "local" bezieht sich auf den Rechner auf dem das
Programm läuft und das ist nun eben nicht der Rechner desjenigen, der die
Webseite abruft.

Mach einen normalen Dateiupload und schieb die Datei dann mit ftp_put
weiter, wenn nicht ohnehin ein move_uploaded_file() reicht. Ein Lesetipp
dazu ist folgender Artikel der FAQ:

11.11. Wie funktioniert ein Datei-Upload über HTML-Formulare?
http://www.php-faq.de/q/q-formular-upload-php4.html

> In meiner
> PC-Testumgebung localhost ... kann ich ein Bild ins Webverzeichnis via FTP
> laden, von meiner Webseite aus funktioniert der Zugriff derzeit noch nicht.
> Sollte das so funktionieren??

Natürlich funktioniert das in deiner lokalen Testumgebung. Dort läuft das
PHP-Programm ja auch auf dem gleichen Rechner auf dem die Bilder liegen.

Gruß,
Matthias

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 23.01.2007 22:32:43 von Udo Pecher

"Johannes Vogel" wrote:

> Chapter 38. Handling file uploads
> http://www.php.net/manual/en/features.file-upload.php
>
Hallo Johannes,

nun habe ich mein HTML-Form und das zugehörige php-File wie im Link
angegeben umprogrammiert. Allerdings kommen jetzt die unten stehenden
Fehlermeldungen. Liegt ein Fehler vor oder handelt es sich tatsächlich um
ein Zugriffsproblem.

Mit der Bitte um Feedback,
Udo Pecher



Fehlermeldungen:

Target: /home/www/web123/html/udo.jpg

Warning: move_uploaded_file(/home/www/web123/html/udo.jpg)
[function.move-uploaded-file]: failed to open stream: Permission denied in
/home/www/web123/html/new.php on line 90

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move
'/home/www/web123/phptmp/phpwi0E40' to '/home/www/web123/html/udo.jpg' in
/home/www/web123/html/new.php on line 90
There was an error uploading the file, please try again!

mit line 90: if
(move_uploaded_file($_FILES["pictures"]["tmp_name"][$key], $target_path))
.....
und
$currentdir=getcwd();
$target_path = $currentdir . "/" . basename($name[$j]);

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 23.01.2007 22:52:03 von Gregor Kofler

Udo Pecher meinte:

> Hallo Johannes,
>
> nun habe ich mein HTML-Form und das zugehörige php-File wie im Link
> angegeben umprogrammiert. Allerdings kommen jetzt die unten stehenden
> Fehlermeldungen. Liegt ein Fehler vor oder handelt es sich tatsächlich um
> ein Zugriffsproblem.

> Fehlermeldungen:
>
> Target: /home/www/web123/html/udo.jpg
>
> Warning: move_uploaded_file(/home/www/web123/html/udo.jpg)
> [function.move-uploaded-file]: failed to open stream: Permission denied in
> /home/www/web123/html/new.php on line 90
>
> Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move
> '/home/www/web123/phptmp/phpwi0E40' to '/home/www/web123/html/udo.jpg' in
> /home/www/web123/html/new.php on line 90
> There was an error uploading the file, please try again!

Da steht eh alles drin - bitte lesen:

"...Unable to move '/home/www/web123/phptmp/phpwi0E40' to
'/home/www/web123/html/udo.jpg'..."

Auf "/home/www/web123/html/" hat PHP offensichtlich keine Schreibrechte.


Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 24.01.2007 11:53:41 von Johannes Vogel

Hi Udo, Gregor

Gregor Kofler wrote:
> Udo Pecher meinte:
>> Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to
>> move '/home/www/web123/phptmp/phpwi0E40' to
>> '/home/www/web123/html/udo.jpg' in /home/www/web123/html/new.php on
>> line 90
>> There was an error uploading the file, please try again!
> Da steht eh alles drin - bitte lesen:
> "...Unable to move '/home/www/web123/phptmp/phpwi0E40' to
> '/home/www/web123/html/udo.jpg'..."
> Auf "/home/www/web123/html/" hat PHP offensichtlich keine Schreibrechte.

Oder udo.jpg existiert da schon und du (der Webserver) hat keinen
Zugriff drauf. Ein chmod 777 für dieses Directory und ein chmod 666 für
die Files da drin hilft.

HTH, Johannes

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 24.01.2007 11:58:05 von Claus Reibenstein

Johannes Vogel schrieb:

> Ein chmod 777 für dieses Directory und ein chmod 666 für
> die Files da drin hilft.

Also ob das der richtige Ansatz ist ...

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 24.01.2007 13:00:38 von Gregor Kofler

Johannes Vogel meinte:
> Hi Udo, Gregor
>
> Gregor Kofler wrote:

....

> Oder udo.jpg existiert da schon und du (der Webserver) hat keinen
> Zugriff drauf.

Oder das. Aber dazu müsste Udo ja nur in sein Verzeichnis schauen...

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 24.01.2007 19:09:01 von Udo Pecher

Gregor Kofler wrote:
>
> ...
>
>> Oder udo.jpg existiert da schon und du (der Webserver) hat keinen Zugriff
>> drauf.
>
> Oder das. Aber dazu müsste Udo ja nur in sein Verzeichnis schauen...
>
Hallo,
also die Datei Udo.jpg war noch nicht drauf. Nun hoffe ich doch für
bahncompany.de den upload (im natürlich psswd- geschützten Bereich) zu
haben. Ich habe jetzt ein anderes Verzeichnis gewählt, für das mir der
Provider offenbar einmal Schreibrechte freigegeben hat. Über das
online-Administrations-Tool sah ich keine Möglichkeit die Rechte des bisher
verwendeten Verzeichnisses selbst einzustellen. Eure Tips oben werde ich
noch testen, bzw.: Wie stellt man ein Verzeichnis ein um es mit
move_uploaded_file... zu beschreiben?

Der Upload klappt prinzipiell mit dem unten anliegenden Code ($uploadir war
entscheidend). Ich mache gerade noch einige Tests: Offenbar reagiert auch
die Filegrößen-Beschränkung auf 300000. Bei einem 8 MB-Bild läuft die
Routine unten ohne Aktion durch...

Dann besteht eigentlich nach wie vor der Bedarf für eine Dynamisierung, d.h.
ich gebe aktuell mit einer config-Datei vor, wieviele Bilder in einem
Formular überhaupt eingetragen werden können. Ist das schön?

Vorab: Ein guter Viewer für die Bilder wird dann wohl automatisch weitere
Fragen hervorrufen.

Viele Grüße und vielen Dank, Udo Pecher

Code:

foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name[$j] = $_FILES["pictures"]["name"][$key];
$f_size[$j]=$_FILES["pictures"]["size"][$key];
if ($f_size[$j]>0)
{
$i=$i+1;
}
$uploaddir = '//home/www/web123/phptmp/';
print "Target: $uploaddir
";
$uploadfile = $uploaddir .
basename($_FILES["pictures"]["name"][$key]);

if (move_uploaded_file($_FILES["pictures"]["tmp_name"][$key],
$uploadfile))
{
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
}
}

Re: lokales Verzeichnis scannen [opendir( c:/test_picture )]

am 26.01.2007 12:15:58 von Stefan Kuhn

Am Sun, 21 Jan 2007 18:07:19 +0100 schrieb Udo Pecher:

Hallo Udo,

du suchst etwas wie http://xupload.aspupload.com/ (kostenpflichtig)
oder jupload.biz (für private IIRC free).
Allerdings muss dein Client dies dann unterstützen. Ob z.B. Firefox das
xupload ActiveX Control wirklich einbinden kann!? Keine Ahnung.

Viele Grüsse
Stefan