PDA

Bekijk Volledige Versie : Re: Hulp bij files uploaden.....



Wimjan
02/07/03, 23:20
Mozus schreef:
> Hoi,
>
> Ik ben bezig met een site te maken voor een vriend van mij. Hij begint een
> vertaalburo en wil een formulier op zijn site, waarbij een txt, doc en
> andere documenten kan worden toegevoegd. Nu ben ik al een tijdje bezig
> geweest om dit te proberen, maar het wil niet lukken.
>
Ai.

> Op het ogenblik ben ik een cgi script aan het proberen die plaatjes (dus
> daarna hopelijk docs) kan uploaden via cgi, maar het wil niet lukken. Via
> mijn eigen site probeer ik dit, heb ook rechten toegekend aan mijn cgi-bin
> en een dir gemaakt met "upload". Onderstaande link wijst hierna, ik kom
> alleen niet verder dan het formulier.
>
> http://www.nederzettingen.nl/file_upload.html
>
> Is er iemand die mij hiermee kan helpen???
>
Tuurlijk. De mensen in nl.internet.www.server-side weten alles van cgi-
scriptjes en zo. Groep toegevoegd en followup-up set.

> Alvast bedankt,
>
> Josh
>
> P.S. heb mijn cgi bestand toegevoegd, zit hier misschien dan toch een fout
> in????
>

>
>
>
> begin 666 upload.cgi
> M(",A+W5S<B]B:6XO<&5R;" M=R -"@T*('5S92!#1TD[( T*#0H@)'5P;&]A
> M9%]D:7(@/2 B:'1T<#HO+W=W=RYN961E<GIE='1I;F=E;BYN;"]U<&QO860B
>
[knip]

In de nl-nieuwsgroepen is het niet toegestaan om op deze manier dingen in
te sluiten. Ik heb je scriptje maar even omgezet naar platte tekst. Mijn
commentaar staat achter ##:


<begin upload.cgi>

#!/usr/bin/perl -w

use CGI;

$upload_dir = "http://www.nederzettingen.nl/upload";
## dit is niet helemaal de juiste manier om te verwijzen naar die upload
## directory. Logischer zou een naam zijn als
## '/usr/local/psa/home/vhosts/nederzettingen.nl/httpdocs/upload'


$query = new CGI;

$filename = $query->param("photo");
$email_address = $query->param("email_address");
$filename =~ s/.*[\/\\](.*)/$1/;
$upload_filehandle = $query->upload("photo");

open UPLOADFILE, ">$upload_dir/$filename";

while ( <$upload_filehandle> )
{
print UPLOADFILE;
}

close UPLOADFILE;

print $query->header ( );
## geen idee wat deze aanroep doet

print <<END_HTML;

<HTML>
<HEAD>
<TITLE>Thanks!</TITLE>
</HEAD>

<BODY>

<P>Thanks for uploading your photo!</P>
<P>Your email address: $email_address</P>
<P>Your photo:</P>
<img src="/upload/$filename" border="0">

</BODY>
</HTML>

END_HTML


</einde upload.cgi>



Groet,

Wimjan

--
Zie <http://inventio.nl/radionu/> voor een realtime overzicht met
programmainformatie van de klassieke radiozenders.

John Bokma
03/07/03, 03:35
Wimjan wrote:

[snip]

> $query = new CGI;
^^^^^^

Noem dat ding $cgi, zie onder waarom. Is sowieso een logischer naam.

> $filename = $query->param("photo");
> $email_address = $query->param("email_address");
> $filename =~ s/.*[\/\\](.*)/$1/;
> $upload_filehandle = $query->upload("photo");
>
> open UPLOADFILE, ">$upload_dir/$filename";
>
> while ( <$upload_filehandle> )
> {
> print UPLOADFILE;
> }
>
> close UPLOADFILE;
>
> print $query->header ( );
> ## geen idee wat deze aanroep doet

Stuurt een "default" header naar de browser, IIRC text/html. En zie hoe
vreemd het is om dat ding $query te noemen, extreem vaag en zo. $cgi
vind ik ook geen goede naam, maar stukken beter dan $query. Wat is een
header van een query nu eenmaal...

[snip]

John

--
email: mail(at)johnbokma.com (or reply) home: http://johnbokma.com/
website design tips: http://johnbokma.com/websitedesign/ (preliminary)