Avatar billede kazz Nybegynder
31. juli 2001 - 16:26 Der er 21 kommentarer og
1 løsning

file upload ?

Jeg har siddet og tæsket et eksempel på file upload igennem, men kan ikke få det til at virke :(

Koden ser sådan ud:

<?
//file_upload.php
$archive_dir = \"/var/www/test\";
function upload_form() {
    global $PHP_SELF;
?>


<form method=\"post\" enctype=\"mutlipart/form-data\" action=\"<? echo $PHP_SELF; ?>\">
<input type=\"hidden\" name=\"action\" value=\"upload\">
Upload file!
<input type=\"file\" name=\"userfile\">
<input type=\"submit\" name=\"submit\" value=\"upload\">
</form>
<?
}

function upload_file() {
    global $userfile, $userfile_name, $userfile_size, $userfile_type, $archive_dir, $WINDIR;
   
    if (isset($WINDIR)) $userfile = str_replace(\"\\\\\\\\\",\"\\\\\", $userfile);
   
    $filename = basename($userfile_name);
   
    if ($userfilename_size <= 0) die (\"could not upload $filename is empty!\");
   
    if (!@copy($userfile, \"$archive_dir/$filename\")) die (\"Wasn\'t able to copy $userfile_name to $filename!\");
   
    if (isset(!$windir) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\";
   
    echo \"The file $filename ? $userfile_type\" . number_format($userfile_size) . \"has been succesfully uploaded.\";
    }
?>
<html>
<head><title>FILE UPLOAD</title></head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\">
<?
if ($action == \'upload\') upload_file();
else upload_form();
?>
</body>
</html>

og fejlmeldingen er:
Parse error: parse error, expecting `T_VARIABLE\' or `\'$\'\' in /var/www/xxx/database/sider/file_upload/upload.php on line 1

???

KAZZ
Avatar billede darkmoon Nybegynder
31. juli 2001 - 16:31 #1
\"mutlipart\" skal være \"multipart\" for det første...
Avatar billede jasber Nybegynder
31. juli 2001 - 16:41 #2
Du mangler en slutparantes i denne linie, og du har sat et ! foran $windir:
if (isset(!$windir) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\";

Hvis du laver om så linien ser sådan ud:
if (isset($windir) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\");

Kommer fejlen ikke.
Avatar billede jasber Nybegynder
31. juli 2001 - 16:42 #3
Og så var der jo lige det med multipart der er stavet forkert som darkmoon gjorde opmærksom på.
Avatar billede jasber Nybegynder
31. juli 2001 - 16:46 #4
Du har også en fejl i denne linie:
if ($userfilename__size <= 0) die (\"could not upload $filename is empty!\");

Den skal se sådan ud:
if ($userfile_size <= 0) die (\"could not upload $filename is empty!\");
Avatar billede kazz Nybegynder
31. juli 2001 - 16:51 #5
Nu har jeg rettet de 3 ting, men det er ikke ok endnu.

kan det være disse to linier der er forkerte

//file_upload.php
$archive_dir = \"/var/www/og så videre\";

KAZZ ???

Avatar billede kazz Nybegynder
31. juli 2001 - 16:54 #6
i det eksempel som jeg har set står der-

//file_upload.php
$archive_dir = \"./docs\";
Avatar billede jasber Nybegynder
31. juli 2001 - 16:56 #7
Jae... du skal selvf. sørge for at det peger på et dir der rent faktisk eksisterer, og at du har de rigtige rettigheder.

Jeg prøvede at køre scriptet med de tre rettelser på min NT maskine, og det virkede fint (havde rettet $archive_dir til at pege på samme dir som jeg havde lagt scriptet i).

Hvad får du af fejl nu?
Avatar billede kazz Nybegynder
31. juli 2001 - 17:04 #8
Mit problem her må ligge i at jeg ikke ved hvordan jeg skal skrive stien, men jeg ved at fra roden hedder stien det bibliotek som filerne skal uploades til

/var/www/udm/database/sider/file_upload/docs

og stien som file_upload.php ligger i hedder:

/var/www/udm/database/sider/file_upload

Hvis jeg ligger begge i samme bibliotek ligesom du gjorde - hvad skal der så stå?

KAZZ :)
Avatar billede jasber Nybegynder
31. juli 2001 - 17:11 #9
Så skal der stå:
$archive_dir = \"/var/www/udm/database/sider/file_upload\";

Der er iøvrigt endnu en fejl i scriptet. Du refererer både til $WINDIR og $windir. Variabler i PHP er \"case-sensitive\". $windir er den rigtige.

Hvilket OS kører du i øvrigt?
Avatar billede kazz Nybegynder
31. juli 2001 - 17:20 #10
Jeg får stadig denne fejl:

Parse error: parse error, expecting `T_VARIABLE\' or `\'$\'\' in /var/www/udm/database/sider/file_upload/file_upload.php on line 1

:(

Med hensyn til permissions så er de stillet på bibliotekerne

Det ligger på en linux box ( ikke lokalt )
- og jeg arbejder på mac os 9.1
Avatar billede jasber Nybegynder
31. juli 2001 - 17:23 #11
Hvordan uploader du filerne til Linux kassen?
Avatar billede jasber Nybegynder
31. juli 2001 - 17:24 #12
Hvis med FTP, så husk at filerne skal overføres som ASCII
Avatar billede kazz Nybegynder
31. juli 2001 - 17:28 #13
Det bliver de allerede :(
øv øv
Avatar billede jasber Nybegynder
31. juli 2001 - 17:30 #14
mystisk...
Avatar billede kazz Nybegynder
31. juli 2001 - 17:34 #15
Ja, men jeg bliver nødt til at smutte nu -

Jeg vender til bage og selfølgelig hvis jeg finder et svar poster jeg det her og uddeler nogle point, men indtil da så tak for indsatsen og vi tales måske ved...

:) KAZZ
Avatar billede kazz Nybegynder
01. august 2001 - 12:06 #16
Nå men jeg har da fundet ud af hvilken linie den brokker sig over

Parse error: parse error, expecting `T_VARIABLE\' or `\'$\'\' in /var/www/xxx/file_upload.php on line 29

Her er koden som den ser ud nu :

<?
//file_upload.php
$archive_dir = \"/var/www/xxx/file_upload\";
function upload_form() {
    global $PHP_SELF;
?>


<form method=\"post\" enctype=\"multipart/form-data\" action=\"<? echo $PHP_SELF; ?>\">
<input type=\"hidden\" name=\"action\" value=\"upload\">
Upload file!
<input type=\"file\" name=\"userfile\">
<input type=\"submit\" name=\"submit\" value=\"upload\">
</form>
<?
}

function upload_file() {
    global $userfile, $userfile_name, $userfile_size, $userfile_type, $archive_dir, $WINDIR;
   
    if (isset($WINDIR)) $userfile = str_replace(\"\\\\\\\\\",\"\\\\\", $userfile);
   
    $filename = basename($userfile_name);
   
    if ($userfile_size <= 0) die (\"could not upload because $filename is empty!\");
   
    if (!@copy($userfile, \"$archive_dir/$filename\")) die (\"Wasn\'t able to copy $userfile_name to $filename!\");
   
    if (isset(!$WINDIR) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\");
   
    echo \"The file $filename $userfile_type\" . number_format($userfile_size) . \"has been succesfully uploaded.\";
    }
?>
<html>
<head><title>FILE UPLOAD</title></head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\">
<?
if ($action == \'upload\') upload_file();
else upload_form();
?>
</body>
</html>

KAZZ :)
Avatar billede kazz Nybegynder
01. august 2001 - 12:43 #17
Til at starte med kan jeg jo selv tilføje at der ikke skal stå

if (isset(!$WINDIR) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\");

men

if (isset($WINDIR) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\");

altså ikke (!$WINDIR)

Nu brokker den sig ikke længere, men når jeg trykker på upload ser det ud til at den bare springer til else upload_form(); og dermed nulstiller formen. Når jeg tjekker er der intet uploaded :(

KAZZ
Avatar billede kazz Nybegynder
01. august 2001 - 12:45 #18
Det er jeg jo også allerede blevet gjort opmærksom på tidligere, men der troede jeg kun at det drejede sig om case sensitive problemet :)
Avatar billede kazz Nybegynder
01. august 2001 - 13:13 #19
Hvis jeg ændrer koden for neden fra
<?
if ($action == \'upload\') upload_file();
else upload_form();
?>

til

<?
if ($action == \'upload\') upload_file();
else echo \"jeg vil ikke upload_form();\";
?>

Får jeg dette frem:
jeg vil ikke upload_form();
Avatar billede kazz Nybegynder
01. august 2001 - 13:48 #20
Så nu virker det sgu\' f.......

<?
if ($action == \'upload\') upload_file();
else upload_form();
?>

Der skulle her ikke tjekkes for værdien var det samme som upload. Istedet skulle der tjekkes om værdien var blevet sat til upload...

Altså:

<?
if ($action = \'upload\') upload_file();
else upload_form();
?>

Her er så den færdige og velfungerende kode !
Hilsen KAZZ

<?
//file_upload.php
$archive_dir = \"/den komplette sti til dit upload bibliotek!\";
function upload_form() {
    global $PHP_SELF;
?>


<form method=\"post\" enctype=\"MULTIPART/FORM-DATA\" action=\"<? echo $PHP_SELF; ?>\">
<input type=\"hidden\" name=\"action\" value=\"upload\">
Upload file!
<input type=\"file\" name=\"userfile\">
<input type=\"submit\" name=\"submit\" value=\"upload\">
</form>
<?
}

function upload_file() {
    global $userfile, $userfile_name, $userfile_size, $userfile_type, $archive_dir, $WINDIR;
   
    if (isset($WINDIR)) $userfile = str_replace(\"\\\\\\\\\",\"\\\\\", $userfile);
   
    $filename = basename($userfile_name);
   
    if ($userfile_size <= 0) die (\"could not upload because $filename is empty!\");
   
    if (!@copy($userfile, \"$archive_dir/$filename\")) die (\"Wasn\'t able to copy $userfile_name to $filename!\");
   
    if (isset($WINDIR) && !@unlink($userfile)) die (\"wasn\'t able to delete the file $userfile_name\");
   
    echo \"The file $filename $userfile_type\" . number_format($userfile_size) . \"has been succesfully uploaded.\";
    }
?>

<html>
<head><title>FILE UPLOAD</title></head>
<body bgcolor=\"#FFFFFF\" text=\"#000000\">
<?
if ($action = \'upload\') upload_file();
else upload_form();
?>
</body>
</html>
Avatar billede staach Nybegynder
14. marts 2005 - 11:59 #21
Jeg sidder selv og forsøger at lave et script til at uploade filer med (kunne selvfølgelig bare copy-paste, men det lærer jeg ikke meget af.)For at forsøge mig frem, brugte jeg flg.: $archive_dir = \"/den komplette sti til dit upload bibliotek!\"; Det giver mig imidlertid en fejl: Warning: Unexpected character in input: '\' (ASCII=92) state=1 in //my_site.
Hvad har jeg misforstået?
Avatar billede tachoo Nybegynder
16. februar 2007 - 13:48 #22
hmm når jeg bruger det script vises der overhovet intet på siden. hvorfor?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester