Avatar billede heden Nybegynder
03. januar 2005 - 17:15 Der er 17 kommentarer og
1 løsning

Hvordan copy'er jeg 1 fil 2 gange?

Hej eksperter.

jeg har følgende script:
<?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "../forside/";
//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>$str3</b> er ikke tilladt for upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;
    }

echo"&Oslash;nsket fil til upload:<p>\n";

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$fil = "skifttal.txt";
if (!($fp = fopen($fil, "r"))) die ("Kan ikke åbne tæller fil.");
//Læser de første 20 chars
$filer = (int) fread($fp, 20);
fclose($fp);
++$filer;
$fp = fopen($fil, "w");
fwrite($fp, $filer);
fclose($fp);


// Array med filtyper, til brug for det endelige filnavn
$filetypes = array(1 => "gif", 2 => "jpg", 3 => "png");

$str = getimagesize($_FILES['upfile']['tmp_name']);
$type = strtr($str[2], $filetypes);
$nytnavn2 = "test.txt";
copy($dist.$nytnavn, "../test/".$nytnavn2);

?>


Som jeg skal have til at copyere den fil jeg uploader 2 gange, en gang ind i mappen "forside" og en anden gang ind i mappen "test". men jeg kan ikke få det til at virke.. er der en der kan hjælpe med det ?
Avatar billede coderdk Praktikant
03. januar 2005 - 17:46 #1
copy($dist.$nytnavn, "../test/".$nytnavn2);

ændres til:

copy($dist.$nytnavn, "../test/".$nytnavn2);
copy($dist.$nytnavn, "../forside/".$nytnavn2);
Avatar billede heden Nybegynder
03. januar 2005 - 18:20 #2
den siger
Parse error: parse error, unexpected $ in /xxx/xxx/xxxx/xxx/xxx.php on line xx

Det er på allersidste linje jeg har får den fejl..
Avatar billede heden Nybegynder
03. januar 2005 - 18:21 #3
men kan ikke se en fejl nogle steder sådan lige?
Avatar billede coderdk Praktikant
03. januar 2005 - 18:58 #4
hmm nej, jeg har jo kopieret en linje og ændet et ord i en streng?
Avatar billede heden Nybegynder
03. januar 2005 - 19:18 #5
site opdate:

<?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "../forside/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>$str3</b> er ikke tilladt for upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;
    }

echo"&Oslash;nsket fil til upload:<p>\n";

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$fil = "skifttal.txt";
if (!($fp = fopen($fil, "r"))) die ("Kan ikke åbne tæller fil.");
//Læser de første 20 chars
$filer = (int) fread($fp, 20);
fclose($fp);
++$filer;
$fp = fopen($fil, "w");
fwrite($fp, $filer);
fclose($fp);


// Array med filtyper, til brug for det endelige filnavn
$filetypes = array(1 => "gif", 2 => "jpg", 3 => "png");

$str = getimagesize($_FILES['upfile']['tmp_name']);
$type = strtr($str[2], $filetypes);
$nytnavn = "forside.jpg";
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $nytnavn);
copy($dist.$nytnavn, "../test/".$nytnavn);
copy($dist.$nytnavn, "../forside/".$nytnavn);


echo "<b>Navn:</b> $str1, <b>st&oslash;rrelse:</b> $str2 bytes, <b>filtype:</b> $str3<br>\n";
echo"</p>";
    }
}else{

echo "Du skal v&aelig;lge en fil til upload. <a href=\"upload.php\">upload.php</a>";
}
?>



Kan du se fejlen her?
det må næsten være noget her:
$str = getimagesize($_FILES['upfile']['tmp_name']);
$type = strtr($str[2], $filetypes);
$nytnavn = "forside.jpg";
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $nytnavn);
copy($dist.$nytnavn, "../test/".$nytnavn);
copy($dist.$nytnavn, "../forside/".$nytnavn);

eller ?
Avatar billede coderdk Praktikant
03. januar 2005 - 19:21 #6
hmm jeg kan ikke se det...
Avatar billede heden Nybegynder
03. januar 2005 - 19:23 #7
nej vel :(?
Avatar billede coderdk Praktikant
03. januar 2005 - 19:28 #8
Mangler du ikke et } til allersidst?
Avatar billede heden Nybegynder
03. januar 2005 - 19:36 #9
Site opdate:
<?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "text/html", "text/plain", "image/jpeg", "image/pjpeg", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "../forside/";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>$str3</b> er ikke tilladt for upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;
    }

echo"&Oslash;nsket fil til upload:<p>\n";

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
$fil = "skifttal.txt";
if (!($fp = fopen($fil, "r"))) die ("Kan ikke åbne tæller fil.");
//Læser de første 20 chars
$filer = (int) fread($fp, 20);
fclose($fp);
++$filer;
$fp = fopen($fil, "w");
fwrite($fp, $filer);
fclose($fp);


// Array med filtyper, til brug for det endelige filnavn
$filetypes = array(1 => "gif", 2 => "jpg", 3 => "png");

$str = getimagesize($_FILES['upfile']['tmp_name']);
$type = strtr($str[2], $filetypes);
$nytnavn = "forside.jpg";
$nytnavn2 = ($filer+1) .".". $type;
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $nytnavn);
copy($dist.$nytnavn, "../test/".$nytnavn2);
copy($dist.$nytnavn, "../forside/".$nytnavn);


echo "<b>Navn:</b> $str1, <b>st&oslash;rrelse:</b> $str2 bytes, <b>filtype:</b> $str3<br>\n";
echo"</p>";
    }
}else{

echo "Du skal v&aelig;lge en fil til upload. <a href=\"upload.php\">upload.php</a>";
}
}
?>

Nu virker den med at ligge billedet op, og give den et forskelligt navn i test mappen for hvert billede der kommer op, og den overskriver filen i mappen forside.. så det er fint.. men nu vil den bare ikke vise billedet?? som om der intet er?
Avatar billede coderdk Praktikant
03. januar 2005 - 19:40 #10
Hvor viser du billedet?
Avatar billede heden Nybegynder
03. januar 2005 - 19:42 #11
på min forside, men os hvis du går ind på den fulde adr. til billedet, så kan man heller ikke se det :/?
Avatar billede heden Nybegynder
03. januar 2005 - 19:43 #12
men kan man se billedet som kommer over i test mappen.. jeg prøver lige at bytte om på de der copy
Avatar billede heden Nybegynder
03. januar 2005 - 19:47 #13
nu virker det.. det skal stå sådan her naturligvis:

copy($dist.$nytnavn, "../test/".$nytnavn2);
copy($dist.$nytnavn2, "../forside/".$nytnavn);

hehe
Avatar billede heden Nybegynder
03. januar 2005 - 20:50 #14
ved du hvorfor den skriver

Warning: copy(../forside/3.jpg): failed to open stream: No such file or directory in /xxx/xxx/xxxx/xxxxx/xxx/xx/xxx.php on line 165


selv om at den udføre opgaven korrekt`?
Avatar billede coderdk Praktikant
03. januar 2005 - 23:42 #15
Hvis det er som du skriver bør der da stå:

copy($dist.$nytnavn, "../test/".$nytnavn2);
copy("../test/".$nytnavn2, "../forside/".$nytnavn);

?
Avatar billede heden Nybegynder
04. januar 2005 - 11:05 #16
ja perfekt .. det virker nu godt ;D.

smid et svar.
Avatar billede coderdk Praktikant
04. januar 2005 - 11:09 #17
Yesh :)
Avatar billede heden Nybegynder
04. januar 2005 - 11:36 #18
Jeg siger mange tak.

-lukket-
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