Schrift
[thread]345[/thread]

Ganzer Pfad über <input type='file' .../>: Möchte den ganzen Dateipfad!

Leser: 1


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Dennis
 2004-08-06 12:26
#3317 #3317
User since
2004-07-28
9 Artikel
BenutzerIn
[default_avatar]
Hi alle zusammen,

ich weiß, dass sich so ziemlich Alles im i-net finden lässt und eine Informationsflut ist (die dazu neigt einen ertrinken zu lassen).
Auch wenn das Problem simpel ist, aber ich möchte den Dateipfad einer selbst auswählbaren Datei für mein CGI-Skript verwenden.
Ich versuche es ganze Zeit im Webformular mit dem <input>-Typ "file" (siehe unten), der gerne für den Upload von Dateien verwendet wird, um eine Datei von meinem Dateisystem auszuwählen.

<form action='http://etc:8080/etc2/script.pl' ....>
<input name='FORMPath' type='file' value='' .../> </form>
...
use CGI;

my $query = new CGI;
my $path = $query->param("FORMPath");
...

Dabei merkt er sich nur den Dateinamen, jedoch nicht seinen Pfad, unter den er abgelegt ist.

Weiß jemand eine Möglichkeit? Ich nehme mal an, es wird nicht zwangsläufig mit "file" gehen, aber deswegen auch hier meine Frage;) :)

Also besten Dank schonmal.\n\n

<!--EDIT|Dennis|1091782338-->
[E|B]
 2004-08-06 21:55
#3318 #3318
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hallo Dennis und Willkommen hier auf Perl-Community.de! :)
Das ist das Problem - CGI.pm parst den gesamten Pfad und gibt (leider) nur den Dateinamen zurück. Du kannst zwei Sachen versuchen:

1) Du parst den HTTP Header selber. Dies ist jedoch nicht zu empfehlen, denn genau dafür gibt es ja CGI.pm. Aber dann hättest du zumindest den gesamten Pfad.
2) Du definierst mit dem File-Field noch ein zusätzliches Hidden-Field. Wenn eine Datei ausgewählt wird, könntest du mit JS eine kleine Routine einbauen, die den gesamten Pfad der Datei in dem Hidden-Field speichert. Das Hidden-Field selber kannst du dann im Script auslesen und hast den gesamten Pfad.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2004-08-06 22:16
#3319 #3319
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kann ich nicht bestätigen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use strict;
use CGI;

my $q = CGI->new();
my $filename = $q->param('upload');

print "Content-Type: text/html\n\n";

print qq~
<html>
<head></head>
<body>
[$filename]
<form action="upload.pl" method="POST" enctype="multipart/form-data">
<input type="file" name="upload" />
<input type="submit" />
</form>
</body>
</html>
~;


Upload Test
esskar
 2004-08-06 22:17
#3320 #3320
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aha... der IE schickt den vollen Pfad mit...
der Mozilla nicht!
[E|B]
 2004-08-06 23:11
#3321 #3321
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Natürlich wie immer IE, der sich nicht an die Standards hält.
Opera schickt auch nur den Dateinamen.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
betterworld
 2004-08-06 23:22
#3322 #3322
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich glaube mich zu erinnern, dass ich irgendwo gehoert/gelesen habe, dass der Standard dahingehend geaendert wurde, nicht den vollen Pfandnamen zu uebertragen, um die Privatsphaere zu schuetzen und so.
esskar
 2004-08-06 23:28
#3323 #3323
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
steht eigentlich nicht direkt drin, oder hab ich es überlesen?

http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2
betterworld
 2004-08-07 00:17
#3324 #3324
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich sehe da auch nichts.
Dubu
 2004-08-07 14:58
#3325 #3325
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Vom Datenschutzaspekt her halte ich es auch fuer besser, wenn der Browser den Pfad zu einer Datei nicht mitsendet. Schliesslich geht es einen Webserver in Timbuktu nichts an, wo ich bei mir auf der Platte Dateien hinlege.

Dass es in irgendeinem Standard so festgehalten ist, wuesste ich aber auch nicht.

Als Empfaenger, andererseits, waere ich normalerweise auch froh, wenn da keine Pfadangaben mitgesendet wuerden, denn dann kann ich mit ruhigem Gewissen die Dateiangabe zum Speichern benutzen. Ich faende es zumindest nicht nett, wenn eine zu speichernde Datei sich "bla/../../../htdocs/index.html" nennen wuerde ...
esskar
 2004-08-07 19:42
#3326 #3326
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Dubu,07.08.2004, 12:58]Als Empfaenger, andererseits, waere ich normalerweise auch froh, wenn da keine Pfadangaben mitgesendet wuerden, denn dann kann ich mit ruhigem Gewissen die Dateiangabe zum Speichern benutzen. Ich faende es zumindest nicht nett, wenn eine zu speichernde Datei sich "bla/../../../htdocs/index.html" nennen wuerde ...[/quote]
input checking sollte schon drin sein!
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2004-08-06 12:26.