/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Fil-upload
Fra : Asger Nielsen


Dato : 14-07-05 10:56

Hejsa,

Jeg er ved at lave en side med fil upload, men kan ikke få det
til at virke.

Jeg bruger et script fra webcafe.dk som ser således ud :

<?php

/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
* http://www.webcafe.dk/artikler/php/upload/
*/


/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "30";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
$_FILES = $HTTP_POST_FILES;
$_POST = $HTTP_POST_VARS;
$_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

/**
* Hvis der er en fil, saa uploader vi den.
*
* Foerst slaar vi lige fast, hvor filen skal flyttes fra og
til.
*/

$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" .
$_FILES["upfil"]["name"];

/**
* Checker lige om filen er for stor til at vi vil acceptere
den.
* Vi bruger ceil() i stedet for round(), saa vi ikke faar den
skoere
* situation, at fejlmeldingen siger, at filen er for stor,
men angiver
* samme stoerrelse for filen og den oevre graense.
*/
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun
" .
$konfiguration["max_stoerrelse"] . "kb, og din fil
fylder " .
ceil($fil_stoerrelse) . "kb");
}
if(function_exists("move_uploaded_file")) {
move_uploaded_file($fra, $til);
} else {
copy($fra, $til);
}

header("Location: " . $_SERVER["PHP_SELF"]);
exit;

} else {

/**
* Intet tegn paa upload, saa vi viser bare listen over filer
* og HTML-formularen til nye uploads.
*/
$indhold = listFiler($konfiguration["upload_bibliotek"]);
$indhold .= bygFormular($_SERVER["PHP_SELF"]);
$output = bygSide("hej", $indhold);

}


/**
* Skriver ud til browseren
*/
echo $output;
exit;



/**************************************************\
** Hjaelpefunktioner **
\**************************************************/

function bygSide($titel, $indhold) {

/**
* Pakker indholdet ind i lidt formalia
*/
return '<html>
<head><title>' . $titel . '</title></head>
<body bgcolor="#ffffff">
<div align="right"><a href="./">Tilbage til
artiklen</a></div>
' . $indhold . '</body>
</html>
';

}

function bygFormular($action) {

$formular = '<form action="' . $action . '" method="post"
enctype="multipart/form-data">
<table border="1" cellpadding="5"
cellspacing="0">
<tr>
<td align="right" bgcolor="#999999"><b>Fil
til upload:</b></td>
<td bgcolor="#cccccc"><input type="file"
name="upfil" /></td>
</tr>
<tr>
<td colspan="2" align="middle"
bgcolor="#dddddd"><input type="submit" value="upload" /></td>
</tr>
</table>
</form>
';

return "<h2>Upload fil:</h2>" . $formular;

}

function listFiler($bibliotek) {

if($bib = @opendir($bibliotek)) {
/**
* Denne syntaks er forklaret i PHP-manualen:
* http://www.php.net/manual/en/function.readdir.php
*/
while (false !== ($fil = readdir($bib))) {
if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
$fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
}
}
closedir($bib);

if(is_array($fil_liste)) {
$liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
} else {
$liste = "<li>Ingen filer p&aring; lager</li>";
}
return "<h2>Filer p&aring; lager:</h2><ul>" . $liste .
"</ul>";
} else {
die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
}

}

?>

Men jeg får denne fejlmelding :

Warning: move_uploaded_file(./upload/News logo.JPG): failed to
open stream: No such file or directory in
/customers/supernormal.dk/supernormal.dk/httpd.www/filnavn.php on
line 73

Warning: move_uploaded_file(): Unable to move '/tmp/phpJl3N3D' to
'./upload/News logo.JPG' in
/customers/supernormal.dk/supernormal.dk/httpd.www/filnavn.php on
line 73

Warning: Cannot modify header information - headers already sent
by (output started at
/customers/supernormal.dk/supernormal.dk/httpd.www/filnavn.php:7)
in /customers/supernormal.dk/supernormal.dk/httpd.www/filnavn.php
on line 78

På forhånd tak
Asger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Mikkel Z. Herold (14-07-2005)
Kommentar
Fra : Mikkel Z. Herold


Dato : 14-07-05 11:13

On 14-07-2005 11:56 Asger Nielsen wrote:
> Warning: move_uploaded_file(./upload/News logo.JPG): failed to
> open stream: No such file or directory in
> /customers/supernormal.dk/supernormal.dk/httpd.www/filnavn.php on
> line 73

Et gæt: Har du oprettet den mappe, filen skal uploades til? Og har du
skriverettigheder til den?

Mvh. Mikkel

--
"At first just a rustle of canvas
And the gentlest breath on my face
But a galloping line of white horses
Said that soon we were in for a race"
Sting - The Wild Wild Sea

http://www.mzh.dk

Asger Nielsen (14-07-2005)
Kommentar
Fra : Asger Nielsen


Dato : 14-07-05 11:27


>
> Et gæt: Har du oprettet den mappe, filen skal uploades til? Og har du
> skriverettigheder til den?
>

Skal jeg bare kalde en mappe for upload_biblioteket ?

Jeg har styr på det med skriverettighederne

Vh
Asger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kasper Johansen (14-07-2005)
Kommentar
Fra : Kasper Johansen


Dato : 14-07-05 12:25

"Asger Nielsen" <nielsen_asger@hotmail.com> skrev i en meddelelse
news:42d636b4$0$18648$14726298@news.sunsite.dk...
> Hejsa,
>
> Jeg er ved at lave en side med fil upload, men kan ikke få det
> til at virke.
>
> Jeg bruger et script fra webcafe.dk som ser således ud :

Det er kun ment som et forslag eller en kommentar.

Hvis du ønsker at få en bredere forståelse for PHP (og programmering
generelt), bør du prøve at skrive scriptet selv, men blot tage udgangspunkt
i hvad andre har skrevet (i stedet for at kopiere det andre har skrevet, og
derved ikke lære noget).

Fil-upload kan gøres en hel del kortere end det du har der (selvfølgelig alt
efter hvor avanceret det er).

Lige umiddelbart vil du lave to ting. En del der uploader filen, og en del
der lister de filer du har i en givet mappe.

I mine eksempler går jeg ud fra at "register_globals" er "on".

Fil-upload (evt. filnavn: "upload.php"):
<?
$dir = "min/mapp";

if ($valg == "doupload"){
if (is_uploaded_file($texminfil)){
// Som udgangspunkt er det dårligt at give filen dens originale
navn, men man kan jo tjekke
// navnet med et par scripts. Hvis brugeren uploader et PHP
dokument kan han udføre farlige
// ting på din server.

move_uploaded_file($texminfil, $dir . "/" .
$_FILES["texminfil"]["name"];
}
}
?>

<form enctype="multipart/form-data" method="post"
action="upload.php?valg=doupload">
<input type="file" name="texminfil">
<input type="submit" value="Upload fil">
</form>


Liste filer til download (evt. filnavn: "listfiler.php":
<?
$dir = "min/mappe";
$fp = opendir($dir);
while(($file = readdir($fp) !== false){
echo "<div><a href=\"" . $dir . "/" . $file . "\">" . $dir . "/" .
$file . "</a></div>";
}
?>

--
Mvh Kasper Johansen



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste