Avatar billede anderseiler Nybegynder
26. maj 2005 - 15:05 Der er 10 kommentarer og
1 løsning

problemer med opload af billede

Hejsa.. Først scriptet:

<?php
    require_once('../Connections/cms.php');
    mysql_select_db($database_cms, $cms);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Upload billede</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if (isset($_FILES['filnavn'])) {
    print "Fil, der er blevet overført:
        {$_FILES['filnavn']['name']}<p>\n";

$query = "INSERT INTO billeder SET billednavn = '".$_FILES['filnavn']['name']."'";

    $Result1 = mysql_query($query, $cms) or die (mysql_error());
}

{
$tempfile = $_FILES['filnavn']['name'];
$destination = "../billeder/{$_FILES['filnavn']['name']} ";
copy($tempfile, $destination);
}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1">
  <p>Fil, der skal overf&oslash;res
    <input name="filnavn" type="file" id="filnavn">
</p>
  <p>
    <input type="submit" name="Submit" value="Overfør">
</p>
</form>
</body>
</html>


Så fejlen:

Warning: copy(image.gif): failed to open stream: No such file or directory in C:\Programmer\Apache Group\Apache2\htdocs\websted\admin\upload.php on line 26

Her er line 26: copy($tempfile, $destination);


Den skriver ind i databasen helt uden problemer, problemet opstår først når den skal kopiere billedet?? Hvorfor?? (:

Mvh
Anders
Avatar billede pallotto Nybegynder
26. maj 2005 - 15:25 #1
Du skal huske at ændre så PHP har lov til at smide noget i mappen. Den skal stå til 777
Avatar billede anderseiler Nybegynder
26. maj 2005 - 15:27 #2
Det er en server jeg kører lokalt på min maskine.. Så kan man da slet ikke ændre CHMOD, kan man??? :S Og hvis det havde været problemet, så havde fejlen nok også gjort opmærksom på, at den pågældende mappe skulle ændres til CHMOD 777...
Avatar billede angam Nybegynder
26. maj 2005 - 15:56 #3
Pallotto > CHMOD 777 hjælper heller ikke så meget på en Windows-maskine ;-)

anderseiler > Prøv at bruge

move_uploaded_file($tempfile, $destination);

istedet for dib copy() funktion.
Avatar billede anderseiler Nybegynder
26. maj 2005 - 16:01 #4
Nu melder den ikke fejl mere, men den overfører heller ikke billedet til mappen /billeder... Kan det have noget at gøre med at jeg kører hele lortet lokalt på maskinen? Men det burde det da ikke?
Avatar billede angam Nybegynder
26. maj 2005 - 16:02 #5
Aahh - jeg ved hvad det er:

move_uploaded_file($_FILES['filnavn']['tmp_name'], $destination);

istedet for copy($tempfile, $destination) løser problemet.
Du bruger selve filnavnet som temp-fil - det er forkert. Billedet gemmes som en temporær fil med et "ukendt" navn; f.eks. difa547.tmp.
Avatar billede anderseiler Nybegynder
26. maj 2005 - 16:05 #6
Det sidste du har skrevet virker perfekt.. ;)

Det sjove ved det her spørgsmål er, at scriptet som står øverst, er en nøjagtig kopi af det script, som står beskrevet i den bog som jeg arbejder mig ud fra.. "CMS System med dreamweaver, PHP og mysql" af Heine Lenneart Christensen.. Så synes jeg det er lidt skidt at der er fejl i bogen.. Men skidt... Jeg siger tak...
Avatar billede angam Nybegynder
26. maj 2005 - 16:08 #7
Fejlen er vel helt præcist i denne linie:

  $tempfile = $_FILES['filnavn']['name'];

der burde være

  $tempfile = $_FILES['filnavn']['tmp_name'];

Om man bruger copy() eller move_uploaded_file() gør knapt så meget; det sidste er direkte beregnet til lige præcist denne opgave, så det er lidt pænere.
Avatar billede pallotto Nybegynder
26. maj 2005 - 19:25 #8
forskellen på move_uploaded_file(); og copy(); er sådan set kun hvad serveren er sat til. Hvis serveren ikke er sat til at kunne bruge copy må man jo bare bruge den anden :)
Avatar billede pallotto Nybegynder
26. maj 2005 - 19:27 #9
glemte lige noget..

angam .. Hvor skulle jeg vide fra at det var en windows maskine? Og det var sådan set også bare et bud.. Fordi jeg har arbejdet med det næsten samme problem.. Hvor jeg bare skulle have sat chmod'en til 777
Avatar billede angam Nybegynder
26. maj 2005 - 20:28 #10
pallotto > Se fejlmeddelelsen:
Warning: copy(image.gif): failed to open stream: No such file or directory in C:\Programmer\Apache Group\Apache2\htdocs\websted\admin\upload.php on line 26

det er en Windows-sti ;-)
Avatar billede pallotto Nybegynder
26. maj 2005 - 20:37 #11
angam - Jaja. Man behøver jo ikke gå i detaljer :P
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