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
\"mutlipart\" skal være \"multipart\" for det første...
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.
Og så var der jo lige det med multipart der er stavet forkert som darkmoon gjorde opmærksom på.
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!\");
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 ???
i det eksempel som jeg har set står der-
//file_upload.php
$archive_dir = \"./docs\";
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?
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 :)
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?
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
31. juli 2001 - 17:23
#11
Hvordan uploader du filerne til Linux kassen?
31. juli 2001 - 17:24
#12
Hvis med FTP, så husk at filerne skal overføres som ASCII
31. juli 2001 - 17:28
#13
Det bliver de allerede :(
øv øv
31. juli 2001 - 17:30
#14
mystisk...
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
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 :)
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
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 :)
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();
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>
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?
16. februar 2007 - 13:48
#22
hmm når jeg bruger det script vises der overhovet intet på siden. hvorfor?
Vi tilbyder markedets bedste kurser inden for webudvikling