wmasterMedlem sedan dec. 2001349 inlägg Håller på med ett uploadscript till admin på en sida. Jag gör administrationsdelen för en sektion som heter "Medlemmar". Det visar sig att det funkar utmärkt att ladda upp en bild när jag lägger till en medlem. Men vidare när jag ska redigera en medlem och man väljer en annan bild som man vill ska laddas upp, då händer ingenting.
Det verkar som att om det redan finns en bild i mappen med samma namn så kan den inte skriva över den. Jag har gjort så att bilderna döps efter ett id som varje medlem får. Därför har jag försökt gjort denna kontroll som ska ta bort en gammal bild med samma namn om sådan finns.
if($image)
{
$file = $_GET["memberId"].".jpg";
$target_dir = "template/gfx/";
if(is_uploaded_file($_GET["id"]).".jpg")
{
unlink($target_dir.$file);
}
move_uploaded_file($_FILES["image"]['tmp_name'], "template/gfx/".$_GET["id"].".jpg");
}
Men det trasslar hela tiden till sig på unlink-funktionen.
Warning: Unlink failed (No such file or directory) detta får jag hela tiden även om jag är tämligen säker på att det ska vara denna sökväg då t.ex. move_uploaded_file en bit nedanför fungerar. Och det är inget med skrivrättigheter eller dylikt då det fungerar att ladda upp osv.
Det som händer om jag inte kör denna kontroll är att själva redigeringen inte ger något fel meddelande, utan det som händer är det att det skapas en bild, i den mapp där bilderna ska laddas upp, som bara heter .jpg
Och det är rätt bild som jag vill ladda upp, men jag kan alltså inte få den att ta bort/ersätta den gamla bilden.
Någon som kan hjälpa mig?
MatteMedlem sedan aug. 20002 975 inlägg Om du gör så här, fungerar det då ?
$file = $_GET['id'].".jpg";
$target_dir = "template/gfx/";
if(file_exists($target_dir.$file)
{
unlink($target_dir.$file);
}
move_uploaded_file($_FILES["image"]['tmp_name'], "template/gfx/".$_GET["id"].".jpg");
wmasterMedlem sedan dec. 2001349 inlägg Hm, konstigt...då får jag jag parse error på denna:
unlink($target_dir.$file);
MatteMedlem sedan aug. 20002 975 inlägg Saknas en slutparentes:
if(file_exists($target_dir.$file)) // Sista parentesen saknades
wmasterMedlem sedan dec. 2001349 inlägg Hm, det som händer nu är att if(file_exists($target_dir.$file)) inte körs. Jag har kontrollerat att $target_dir.$file ger rätt sökväg och filnamn och att den bilden verkligen finns i mappen :/
MatteMedlem sedan aug. 20002 975 inlägg Går den inte in if-satsen, eller körs inte unlink ?
if(file_exists($target_dir.$file))
{
echo "Raderar ".$target_dir.$file."<br>";
unlink($target_dir.$file);
}
Skrivs något ut då ?
wmasterMedlem sedan dec. 2001349 inlägg Alltså jag har testat var den skriver ut och ingenting skrivs utan inne i if-satsen så den går följaktligen inte igenom denna. Det är det jag tycker är konstigt då $target_dir.$file verkligen generar rätt sökvägen osv...bild finns och allt
MatteMedlem sedan aug. 20002 975 inlägg Fungerar din move_upload_file() så är det verkligen konstigt.
Om du tar bort if-satsen runtomkring, vad visar felmeddelandet då?
Visa hela felmeddelandet.
wmasterMedlem sedan dec. 2001349 inlägg Det verkar som om jag lyckats lösa det hela. Problemet verkade ligga i $_GET["id"] och $_GET["memberId"]
if($image)
{
$file = $_GET["memberId"].".jpg";
$target_dir = "template/gfx/";
if(is_uploaded_file($_GET["id"]).".jpg")
{
unlink($target_dir.$file);
}
move_uploaded_file($_FILES["image"]['tmp_name'], "template/gfx/".$_GET["id"].".jpg");
}
Då jag bytta ut "id" mot "memberId" i move_uploaded_file-strängen så fungerade det. Till en början skapade den en fil med samma namn flrutom att det belv dubbelt .jpg. Men jag tog bort medlemmen helt och hållet och skapade en ny, sedan när jag bytte bild fungerade det. Men jag tycker fortfarande att det är konstigt eftersom"id" generade rätt i move_uploaded_file men inte tidigare där uppe i koden...
MatteMedlem sedan aug. 20002 975 inlägg Men du kan inte använda is_uploaded_file() som du gjort här.
is_uploaded_file() används för att kolla om någon fil precis nu är uppladdad via $_FILES.
Det är file_exists() du måste använda för att kolla om en fil finns.
wmasterMedlem sedan dec. 2001349 inlägg Japp...det fungerar nu iaf...tack för all hjälp